2016-04-19 27 views
0

私のアプリは入力用にNSTextFieldsを持っています。私は意図的に入力の特別な処理を行うためにNSNumberFormatterを使用しません。アプリは「フルスクリーン」モードを実装しています。アプリケーションがフルスクリーンで、フォーカスがテキストフィールドにあるときに、ウィンドウモードを再開するためにESCキーを押す代わりに、スペルの候補/補完を含むポップアップが表示されます。私は、ESCキーが押されたときにこれらのふるまいを望んでいません。補完ポップアップでも、フルスクリーンモードを終了することもできません。助言がありますか?ありがとう。NSTextFieldのスペル候補

答えて

1

このコマンドを処理するには、NSTextFieldDelegateをセットアップし、テキストフィールドにデリゲートを設定する必要があります。あなただけのスペル候補を排除したい場合は、次のメソッドをオーバーライドすることができ

@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; 
} 

`` `

が、上記の両方を行います。ここでは一例です。

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

はあなたの答え、ダニエルいただきありがとうございます。私はあなたの最初の提案を使用して終了し、アプリケーションがフルスクリーンモードであるかどうかを判断する方法を理解するためにさらに調査をした後、私は自分が望む動作を実装することができました。ご協力いただきありがとうございます。 – wagill

0

これは私が望んでいた振る舞いを実装する方法である:

- (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; 
} 
関連する問題