2011-01-11 6 views
2

私はMacのステータスバーにNSMenuを持っています。その中にNSMenuItemsとカスタムビューの読み込みがあります。カスタムビュー内にはNSTextFieldがあります。 Spotlightメニューのようにメニューを開いたときにNSTextFieldにフォーカスを当てて、ユーザーがすぐに入力できるようにしたいと思います。NSMenuのNSTextFieldに焦点を当てますか?

私は含めてかなりの数の方法を試してみました:

[myTextField becomeFirstResponder]; 

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

をそれらのどれも動作しません。

おかげ アレックス

答えて

2

あなたは最初の1で右のトラックにあったが、実際には、ビューファーストレスポンダ-becomeFirstResponderことはありません - あなたはそれのために-[NSWindow makeFirstResponder:]を呼び出す必要があります。

NSMenuには実際に添付ウィンドウがあることがGoogleから示唆されています。非常に慎重に使用する必要がありますが、makeFirstResponder:に電話をかけることは安全です。これと方法について

詳しい情報はここでそれを活用するために:助けをhttp://www.cocoabuilder.com/archive/cocoa/195835-set-focus-on-nsview-in-an-nsmenuitem.html

+0

感謝を。あなたのソリューションは部分的に助けてくれました。メニューが開かれても「[[myTextView window] makeFirstResponder:myTextField]」と呼んでもまだ動作しませんが、myTextViewをクリックするとmyTextFieldがフォーカスされます。 –

関連する問題