3

私の最終的な目標は、デフォルトで NSTextField を選択して、ユーザーが最初にテキスト フィールドをクリックしなくても入力を開始できるようにすることです。

NSViewController によって制御されるビューがあります。ビューには、いくつかのテキスト フィールドが含まれています。NSView と NSWindow はどちらもカス​​タム サブクラスです。テキスト フィールドはサブクラス化されません。単なる標準の NSTextField です。

ビューコントローラーのawakeFromNIB内には、次のコードがあります。

[[[NSApplication sharedApplication] mainWindow] makeFirstResponder:firstBox];
NSLog(@"%@",NSStringFromClass([[[[NSApplication sharedApplication] mainWindow] firstResponder] class]));

テキスト フィールドはその周りにフォーカス リングを取得し、NSLog は最初の応答者が NSTextField であることを出力しますが、入力を開始する前にテキスト フィールド内をクリックする必要があります。

フィールドが最初のレスポンダーになっているのに編集できない原因は何ですか? makeFirstResponder を呼び出すべきより良い方法はありますか?

4

1 に答える 1

7

CocoaDev.com で潜在的に役立つヒントを見つけました。これを試してください:

[[[NSApplication sharedApplication] mainWindow] 
    performSelector: @selector(makeFirstResponder:) 
         withObject: firstBox 
         afterDelay:0.0];
于 2013-09-28T18:28:05.710 に答える