Я создал пользовательский вид для кнопки, так как мне нужно реализовать подсветку при наведении курсора мыши. Класс очень прост, и я уже реализовал mouseEntered:
и mouseExited:
. Представление было зарегистрировано для отслеживания в методе init (не уверен, что это лучшее место).
Проблема в рисовании. Я держу ivar mouseOver
, для мыши вводим YES
, а для мыши NO
. Другой ивар для изображения называется image
. Разница между наведением мыши или нет, когда дело доходит до рисования, заключается в прозрачности. Вот мой drawRect:
:
- (void)drawRect:(NSRect)dirtyRect
{
[image drawAtPoint:NSMakePoint(0.0,0.0)
fromRect:dirtyRect
operation:NSCompositeCopy
fraction:((mouseOver) ? 1.0 : 0.0)];
}
Работает красиво, но, видимо, только когда мышь впервые вошла. Я предполагаю, что проблема в том, что вид не очищается до рисования другого изображения. Я попытался добавить:
[[NSColor clearColor] set];
NSRectFillUsingOperation(dirtyRect, NSCompositeClear);
Но безуспешно. Как я могу это исправить?