У меня проблема с прослушиванием событий, я могу прослушивать события, которые отлично работают, однако я не могу заставить его прекратить прослушивание событий. Я исследовал это некоторое время и придумал метод + (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];
}