gpt4 book ai didi

objective-c - 如何停止监听 NSEvents?

转载 作者:太空狗 更新时间:2023-10-30 03:35:21 27 4
gpt4 key购买 nike

我在监听事件时遇到问题,我可以监听完美运行的事件,但我无法让它停止监听事件。我研究了一段时间,想出了一个方法,+ (void)removeMonitor:(id)eventMonitor,它说我应该在完成监听器后使用

但是当我尝试使用该方法时,就像这样

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

我不断收到“-[NSEvent invalidate]: unrecognized selector sent to instance”的错误,我也对此进行了研究,我相信这意味着我正在覆盖正在使用的内存。但是我不知道如何解决这个问题。非常感谢任何建议或帮助!

更新 感谢 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];
}

最佳答案

您向 removeMonitor: 传递了错误的内容。对 +[NSEvent addGlobalMonitorForEventsMatchingMask: handler:] 的调用返回一个称为事件处理程序对象的值。这就是可以传递给 removeMonitor: 的内容。

关于objective-c - 如何停止监听 NSEvents?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com