我已经创建了一个简单的NSView子类,但是调用becomeFirstResponder
似乎没有效果 - 框架甚至没有调用我的acceptsFirstResponder
方法。
但是,如果我用鼠标点击我的视图,它似乎成为第一个响应者,我可以收到keyDown
个事件。
这是我的NSView子类:
@interface MyView : NSView
@end
@implementation MyView
- (void) keyDown: (NSEvent*) with {
NSLog(@"keyDown");
}
- (BOOL)acceptsFirstResponder {
NSLog(@"acceptsFirstResponder");
return YES;
}
- (BOOL)canBecomeKeyView {
NSLog(@"canBecomeKeyView");
return YES;
}
@end
以下是我在AppDelegate
中设置的方式:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSRect frameRect = NSMakeRect(0,0,100,100);
MyView *myView = [[MyView alloc] initWithFrame:frameRect];
[_window.contentView addSubview:myView];
[myView becomeFirstResponder];
}
我做错了什么?
答案 0 :(得分:1)
哎呀 - the documentation说'永远不要直接调用此方法'。所以我应该打电话给
[_window makeFirstResponder:myView];
而不是
[myView becomeFirstResponder];
感谢Willeke的提示。