2016-04-19 21 views
0

Meine App verfügt über NSTextFields für Eingabe; Ich benutze NSNumberFormatter absichtlich nicht, um spezielle Eingaben zu machen. Die App implementiert den Vollbildmodus. Wenn die App im Vollbildmodus ist und der Fokus in einem Textfeld liegt, und ich die ESC-Taste drücke, um den Fenstermodus wieder aufzunehmen, erhalte ich stattdessen ein Pop-up mit Rechtschreibvorschlägen/Vervollständigungen. Ich möchte keines dieser Verhaltensweisen, wenn die ESC-Taste gedrückt wird: Ein Beendigungs-Pop-up, oder nicht in der Lage, den Vollbildmodus zu beenden. Irgendwelche Vorschläge? Vielen Dank.Rechtschreibvorschläge in NSTextField

Antwort

1

Sie müssen einen NSTextFieldDelegate einrichten, um diesen Befehl zu verarbeiten, und den Delegaten auf das Textfeld setzen. Hier ein Beispiel:

@property (weak) IBOutlet NSWindow *window; 
@property (weak) IBOutlet NSTextField *textField; 
@end 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Insert code here to initialize your application 
    self.textField.delegate = self; 
} 

- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector { 
    if (commandSelector == @selector(cancelOperation:)) { 
     NSLog(@"handleCancel"); 
     return YES; 
    } 
    return NO; 
} 

`` `

Wenn Sie nur Rechtschreibvorschläge beseitigen wollten, könnten Sie die folgende Methode außer Kraft setzen, aber die oben tut beides.

- (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index { 
return nil; 
} 
+0

Dank für Ihre Antwort danken, Daniel. Am Ende habe ich deinen ersten Vorschlag verwendet und nachdem ich weitere Nachforschungen angestellt habe, um herauszufinden, wie ich feststellen kann, wenn sich die App im Vollbildmodus befindet, konnte ich das gewünschte Verhalten implementieren. Nochmals vielen Dank für Ihre Hilfe. – wagill

0

Dies ist, wie ich das Verhalten implementiert, die ich wollte:

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector { 

    if (commandSelector == @selector(cancelOperation:)) { 

     if (([_window styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask) { 

      [textView doCommandBySelector:@selector(toggleFullScreen:)]; 
     } 

     return YES; 
    } 

    return NO; 
}