具体的には、テキスト フィールドのフォーカスに関して一貫性のない動作をします。
ステータス メニューをポップアップする LSUIElement があります。そのメニュー内には、テキスト フィールドを含むビューがあります。テキスト フィールドは選択可能である必要があります。必ずしもデフォルトで選択されるとは限りませんが、いずれかが選択されます。
ステータスアイテムがクリックされると、それがトリガーされます
[NSApp activateIgnoringOtherApps:YES];
* ステータス メニューの残りの半分は、それ自体が「バックグラウンドにある」と見なされているようで、クリックしてもテキスト フィールドにフォーカスを当てることができません。(ステータス アイテムのクリック トリガーは、NSLog があることで発生していることを知っています。)
これは Apple がこれらのステータス項目を処理する方法のバグですか、それとも activateIgnoringOtherApps の処理を誤っているのでしょうか?
※実際に別アプリ起動後の初回のみ失敗するようです。その後、正常に動作します。
完全なスニペット:
-(void)statusItemClicked:(id)sender {
//show the popup menu associated with the status item.
[statusItem popUpStatusItemMenu:statusMenu];
//activate *after* showing the popup menu to obtain focus for the text field.
[NSApp activateIgnoringOtherApps:YES];
}