0

編集された NSTextField があります。Enter キーを押すと、期待どおりにアクションが呼び出されます。

NSTextField 以外の場所をクリックすると、同じ効果が得られます。ファーストレスポンダーの辞任が鍵になる可能性がありますが、それは一部の要素がクリック/選択/フォーカスされた場合 (別の NSTextField または NSTableView など) にのみ発生し、他の要素 (NSButton や NSSlider など) では発生しません。

NSTextField のフォーカスは を使用して設定解除できますが[[self window] makeFirstResponder:nil]、すべてのオブジェクトのアクションでこの行を呼び出すにはあまりにも醜いでしょう。

より良い解決策はありますか?

4

1 に答える 1

0

Cocoa Event Handling Guide を詳しく調べてください。NSResponder をよく見てください。NSWindow や NSApplication など、多くのオブジェクトが NSResponder から継承されます。達成しようとしていることを推測したり、ビューにフォーカスがないときに編集をコミットしたり、アプリが終了したり、バックグラウンドになったりするときに通知を監視することも含めることができます...

于 2013-01-20T09:38:21.467 に答える