如何处理Cocoa中窗口内的mousedown事件?
我的代码:
-(void)mouseDown:(NSEvent *)event {
NSLog(@"yay");
}
我在xcode 4.0.1中使用的是Mac OS10.6。
编辑: 是的,这是在app委托中,但这是我的.h:
@interface jumperAppDelegate:NSWindow {
我以前在app委托中所做的事情(仅适用于鼠标事件)。这真让我讨厌
答案 0 :(得分:6)
确保您继承NSWindow
,并符合<NSWindowDelegate>
协议。像这样:
@interface YourWindow : NSWindow <NSWindowDelegate> {}
@end
然后你应该收到事件通知。
-(void)mouseDown:(NSEvent *)event {
}
答案 1 :(得分:2)
对于要调用的类,要调用的类需要从NSResponder继承。 Windows和视图都是NSResponder的子类。如果您调用此类的类不是NSResponder的子类,则该方法将不会触发。
*更新* 还要确保覆盖acceptFirstResponder以返回yes。
- (BOOL)acceptsFirstResponder {
return YES;
}
答案 2 :(得分:0)
我不确定,但我听说你的头文件(.h)中需要用“NSWindow”替换“NSObject”。我会测试它,但我现在不在我的电脑上。
另外,请确保将以下代码放入头文件中:
- (void) mouseDown:(NSEvent*)event;
编辑:我做了一些测试和研究,但我无法让它发挥作用。我有两个提示。
使用'-acceptsFirstMouse方法。
尝试创建NSEvent:
NSEvent * someEvent; - (无效)鼠标按下:(NSEvent *)someEvent;
这可能不起作用,但我会提供更多信息来管理