2017-12-08 5 views
0

NSViewの単純なサブクラスを作成しましたが、becomeFirstResponderを呼び出しても効果がないようです - フレームワークは私のacceptsFirstResponderメソッドを呼び出しません。カスタムNSViewを最初のレスポンダとして設定できません

私のビューでマウスをクリックすると、最初のレスポンダーとなり、keyDownというイベントを受け取ることができます。ここで

は私のNSViewのサブクラスである:私は間違っ

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 

     NSRect frameRect = NSMakeRect(0,0,100,100); 
     MyView *myView = [[MyView alloc] initWithFrame:frameRect]; 
     [_window.contentView addSubview:myView]; 

     [myView becomeFirstResponder]; 
} 

何をしています:

@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でそれを設定してい方法ですか?

+2

'becomeFirstResponder'のドキュメントをお読みですか? – Willeke

答えて

1

おっと - the documentationには、このメソッドを直接呼び出すことはありません。だから私は、ヒントのためにWillekeに

[_window makeFirstResponder:myView]; 

代わりの

[myView becomeFirstResponder]; 

感謝を呼び出す必要があります。

関連する問題