Как использовать NSTrackingArea - PullRequest
10 голосов
/ 09 января 2011

Я новичок в программировании на Mac и хочу запускать события, когда курсор входит или выходит из главного окна.Я прочитал кое-что о NSTrackingArea, но я точно не понимаю, что делать.

Ответы [ 2 ]

14 голосов
/ 10 января 2011

Apple предоставляет документацию и примеры для NSTrackingAreas .

Самый простой способ отследить, когда мышь входит в окно или существует в нем, - это установить область отслеживания в окне содержимого окна. Это, однако, не будет отслеживать панель инструментов окна

В качестве быстрого примера в коде пользовательского представления контента:

- (void) viewWillMoveToWindow:(NSWindow *)newWindow {
    // Setup a new tracking area when the view is added to the window.
    NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options: (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways) owner:self userInfo:nil];
    [self addTrackingArea:trackingArea];
}

- (void) mouseEntered:(NSEvent*)theEvent {
    // Mouse entered tracking area.
}

- (void) mouseExited:(NSEvent*)theEvent {
    // Mouse exited tracking area.
}

Вы также должны реализовать метод NSView updateTrackingAreas и проверить область отслеживания события, чтобы убедиться, что она правильная.

5 голосов
/ 25 января 2011

Ответ от Мэтт Бирнер действительно помог мне;необходимо реализовать метод -viewWillMoveToWindow:.

Я бы также добавил, что вам также потребуется реализовать это, если вы хотите обрабатывать области отслеживания при изменении размера представления:

- (void)updateTrackingAreas
{
   // remove out-of-date tracking areas and add recomputed ones..
}

внастраиваемый подкласс для обработки изменяющейся геометрии вида;это будет вызвано для вас автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...