Как перестать слушать NSEvents?

У меня проблема с прослушиванием событий, я могу прослушивать события, которые отлично работают, однако я не могу заставить его прекратить прослушивание событий. Я исследовал это некоторое время и придумал метод + (void )removeMonitor :(id )eventMonitor, который он говорит, что я должен использовать, когда я закончу с слушателем

Но когда я пытаюсь использовать этот метод, вот так

[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask|NSKeyDownMask) handler:^(NSEvent *event) {
    [NSEvent removeMonitor:event];
}];

Я продолжаю получать сообщение об ошибке «-[NSEvent invalidate] :непризнанный селектор, отправленный экземпляру», который я также исследовал,и я считаю, что это означает, что я перезаписываю память, которая используется. Однако я не знаю, как решить эту проблему. Любые предложения или помощь очень ценятся!

ОБНОВЛЕНИЕ Благодаря JWWalker, Samir и Abizern, теперь это работает

//I made a global variable called eventHAndler

файл.h

id eventHAndler

.m-файл

eventHAndler = [NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask|NSKeyDownMask) handler:^(NSEvent *event){
///code 
}];

/// created another method called stop. When called it stops the eventHAndler
- (IBAction)Stop:(id)sender 
{
    stop = 1;
    NSLog(@"inside stop method");
    [NSEvent removeMonitor:eventHAndler];
}
7
задан A.sharif 30 August 2012 в 16:37
поделиться