2017-12-08 2 views
0

Ich habe eine einfache Unterklasse von NSView erstellt, aber Aufruf becomeFirstResponder scheint keinen Effekt zu haben - das Framework ruft nicht einmal meine acceptsFirstResponder Methode.Kann meine benutzerdefinierte NSView nicht als Ersthilfe festlegen

Wenn ich jedoch mit meiner Maus auf meine Ansicht klicke, wird es zum Ersthelfer und ich kann keyDown Ereignisse empfangen.

Hier ist meine NSView Unterklasse:

@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 

Und hier ist, wie ich es bin Einstellung AppDelegate in meinem up:

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

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

     [myView becomeFirstResponder]; 
} 

Was mache ich falsch?

+2

Haben Sie die Dokumentation zu 'findFirstResponder' gelesen? – Willeke

Antwort

1

Whoops - the documentation sagt 'Niemals diese Methode direkt aufrufen'. Also sollte ich anrufen

[_window makeFirstResponder:myView]; 

statt

[myView becomeFirstResponder]; 

Dank Willeke für den Hinweis.

Verwandte Themen