A.s*_*rif 7 cocoa objective-c nsevent
我在侦听事件时遇到问题,我可以听取完美运行的事件但是我不能让它停止听事件.我研究了一段时间,想出了一个方法,+(void)removeMonitor:(id)eventMonitor,它说当我完成监听器时我应该使用它
但是当我尝试使用这种方法时,就像这样
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask|NSKeyDownMask) handler:^(NSEvent *event) {
[NSEvent removeMonitor:event];
}];
Run Code Online (Sandbox Code Playgroud)
我一直收到错误" - [NSEvent invalidate]:无法识别的选择器发送到实例"我也研究过,我相信这意味着我正在覆盖正在使用的内存.但是我不知道如何解决这个问题.任何建议或帮助非常感谢!
更新感谢JWWalker,Samir和Abizern,它现在有效
//I made a global variable called eventHAndler
Run Code Online (Sandbox Code Playgroud)
.h文件
id eventHAndler
Run Code Online (Sandbox Code Playgroud)
.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];
}
Run Code Online (Sandbox Code Playgroud)
JWW*_*ker 17
你传递错误的东西removeMonitor:.调用+[NSEvent addGlobalMonitorForEventsMatchingMask: handler:]返回一个名为事件处理程序对象的值.这是可以传递给的removeMonitor:.
| 归档时间: |
|
| 查看次数: |
1879 次 |
| 最近记录: |