5

MacステータスバーにNSMenuがあり、その中にNSMenuItemsとカスタムビューがたくさんあります。カスタムビュー内にNSTextFieldがあります。Spotlightメニューのようにメニューを開いたときにNSTextFieldにフォーカスを設定して、ユーザーがすぐに入力できるようにします。

私は以下を含むかなりの数の方法を試しました:

    [myTextField becomeFirstResponder];

    [myTextField selectText: self];
    [[myTextField currentEditor] setSelectedRange:NSMakeRange([[myTextField stringValue] length], 0)];

しかし、それらのどれも機能しません。

ありがとうアレックス

4

1 に答える 1

3

あなたは最初のもので正しい軌道に乗っていましたが、-becomeFirstResponder実際にはあなたの見解を最初の応答者にするわけではありません-あなたはそれを要求-[NSWindow makeFirstResponder:]しなければなりません。

Googleは、NSMenu実際にウィンドウを接続することをお勧めします。慎重に使用する必要がありますが、安全に呼び出すmakeFirstResponder:ことができます。

これとそれを利用する方法の詳細については、https://web.archive.org/web/20171113100008/http ://www.cocoabuilder.com/archive/cocoa/195835-set-focus-on-nsviewをご覧ください。 -in-an-nsmenuitem.html

于 2011-01-11T20:27:14.567 に答える