У меня проблема с прослушиванием событий, я могу прослушивать события, которые отлично работают, однако я не могу заставить его прекратить прослушивание событий. Я исследовал это некоторое время и придумал метод + (void)removeMonitor:(id)eventMonitor, который он говорит, что я должен использовать, когда я закончу с слушателем
Но когда я пытаюсь использовать метод, вот так
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask|NSKeyDownMask) handler:^(NSEvent *event) {
[NSEvent removeMonitor:event];
}];
Я продолжаю получать сообщение об ошибке «-[NSEvent недействительно]: в экземпляр отправлен неизвестный селектор», который я также исследовал, и я считаю, что это означает, что я перезаписываю используемую память. Однако я не знаю, как решить эту проблему. Любые предложения или помощь очень ценятся!
ОБНОВЛЕНИЕ Благодаря JWWalker, Samir и Abizern, теперь это работает
//I made a global variable called eventHAndler
.h файл
id eventHAndler
.м файл
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];
}