NSView drawRect вмешивается в подпредставления?

У меня есть nsview, и я использую рисовать прямоугольник, чтобы рисовать изображение для фона. Он также имеет 3 подпредставления nsbuttons. Проблема в том, что всякий раз, когда мышь нажимает на кнопку, другие кнопки исчезают. Но когда я удаляю метод рисования прямоугольника, этого не происходит. Итак, я предполагаю, что это связано с методом рисования прямоугольников для рисования изображений.

Как мне этого избежать? Итак, я предполагаю, что это связано с методом рисования прямоугольников для рисования изображений.

Как мне этого избежать? Итак, я предполагаю, что это связано с методом рисования прямоугольников для рисования изображений.

Как мне этого избежать? Спасибо.

РЕДАКТИРОВАТЬ: Хорошо, я понял, в чем проблема. В принципе, у меня есть NSMenuItem, и я помещаю в него представление с тремя кнопками. Но в NSMenu вверху есть отступ в 4 пикселя. Итак, в основном, чтобы удалить это заполнение, я использовал решение, представленное здесь: Пробел над пользовательским представлением NSMenuItem

В решении есть строка в методе drawRect:

[[NSBezierPath bezierPathWithRect:fullBounds] setClip];

В тот момент, когда я удаляю эту строку, и кнопка ведет себя правильно. Но тогда прокладка сверху никуда не делась.

Вот мой drawRect:

- (void) drawRect:(NSRect)dirtyRect {

    [[NSGraphicsContext currentContext] saveGraphicsState];

    NSRect fullBounds = [self bounds];
    fullBounds.size.height += 4;
    [[NSBezierPath bezierPathWithRect:fullBounds] setClip];

    NSImage *background = [NSImage imageNamed:@"bg.png"];
    [background drawInRect:fullBounds fromRect:NSZeroRect operation:NSCompositeCopy fraction:100.0];

    [[NSGraphicsContext currentContext] restoreGraphicsState];
}

5
задан Community 23 May 2017 в 11:59
поделиться