objective-c - 从 NSEvent block 调用 Cocoa ObjC 方法

标签 objective-c cocoa macos

为什么这段代码不起作用:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [NSEvent addGlobalMonitorForEventsMatchingMask:(NSScrollWheelMask) handler:^(struct NSEvent *event){
        [scrollEvent:event];
    }];
}

- (void)scrollEvent:event {
    NSLog( @"scroll" );
}

它说“‘scrollEvent’未声明”。

我刚刚学习 objc 和 cocoa,所以我认为这只是一个简单的错误。

最佳答案

您的代码似乎有一些错误。我已经清理了一些,请看下面。

- (void) applicationDidFinishLaunching:(NSNotification *) aNotification { 
    [NSEvent addGlobalMonitorForEventsMatchingMask: NSScrollWheelMask handler:^(NSEvent *event){ 
        [self scrollEvent: event]; 
    }]; 
} 

- (void) scrollEvent: (NSEvent *) event { 
    NSLog( @"scroll" ); 
}

总结:

  • 您对该 block 的论点应该是 NSEvent *,而不是 struct NSEvent *.
  • 您对 scrollEvent 的调用需要发送给自己。
  • 您的 scrollEvent 实现有一个不正确的签名。

希望对您有所帮助,并祝该计划顺利。

关于objective-c - 从 NSEvent block 调用 Cocoa ObjC 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837024/

相关文章:

ios - 尝试打开以前在 Xcode 7 Beta 中打开的项目时,Xcode 6 会抛出错误

objective-c - 为什么将 Objective-C header 或代码文件从一个文件夹拖到另一个文件夹会使其在 Xcode 4.6 中变成红色?

macos - NSSharingService 根据所选服务自定义项目列表

ios - CGImageCreate 复制与 CGImage 保留

Python - Mac 上的 Crypto.Cipher/Pycrypto?

macos - 在 Mac OS 10.9.1 上编译 MonoMac 时出错

objective-c - 在没有 XCode 的情况下运行的应用程序的 NSLog 输出?

iOS 通话指示器正在下推 View /内容,修改 Root View `frame`

ios - forceTouchCapability 返回零

javascript - iPhone 上的锁定方向 UIWebView