从NSEvent Block调用Cocoa ObjC方法

Tea*_*eak 3 macos cocoa objective-c

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

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

- (void)scrollEvent:event {
    NSLog( @"scroll" );
}
Run Code Online (Sandbox Code Playgroud)

它说"'scrollEvent'未声明".

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

Per*_*ion 5

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

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

- (void) scrollEvent: (NSEvent *) event { 
    NSLog( @"scroll" ); 
}
Run Code Online (Sandbox Code Playgroud)

总结一下:

  • 你对该块的论证应该是一个NSEvent *,而不是一个 struct NSEvent *.
  • 您需要将scrollEvent调用发送给self.
  • 您的scrollEvent实现具有不正确的签名.

希望对程序有所帮​​助和好运.