3

多数の NSTextField を含む NSPopover を提示するアプリに取り組んでいます。期待どおりにこれらのフィールド間をタブで移動できますが、ポップオーバーは特定のテキスト フィールドが表示されたときに編集状態になるように選択しており、編集したいフィールドではありません。プログラムで (または Interface Builder で) ポップオーバーの外観で編集しているテキスト フィールドを定義できるようにしたいと考えています。これどうやってするの?

関連するさまざまなテキスト フィールドすべてに IB アウトレットを接続して、適切なキー ビュー ループを設定しました。ポップオーバーのnextResponderプロパティを、最初に編集したいテキスト フィールドに接続しましたが、効果-ポップオーバーは、私の代わりに優先テキストフィールドを選択します。Window Programming Guideは、ウィンドウのアウトレットを選択したいビューに設定することを提案してinitialFirstResponderいますが、NSPopover は NSWindow ではなく、initialFirstResponderプロパティがありません (明らかな何かが欠けていない限り)。

NSPopover が表示されたときに編集したい NSTextField を指定する方法はありますか?

4

2 に答える 2

4

-makeFirstResponder:テキストフィールドを使用して渡そうとしたとおっしゃったと思います。これはウィンドウの を設定しますがfirstResponder、それは同じではなく、キー ビュー ループを尊重するためにウィンドウを別の値に設定するinitialFirstResponder必要があります。(ソース)あなたが試したことを少し調整すると、うまくいきました:initialFirstRespondernil

- (void)popoverWillShow:(NSNotification *)notification
{
    // Set the window's initialFirstResponder so that the key view loop isn't auto-recalculated.
    [[myField window] setInitialFirstResponder:myField];
}
于 2013-11-28T12:34:39.330 に答える
0

IB でフォーカスしたくないすべてのテキスト フィールドを「編集可能」ではなく「選択可能」に設定することで、これを機能させることができると思います。 . 次に、 popoverDidShow: メソッドで、それらをすべて編集可能に戻すと、通常どおりそれらの間をタブで移動できるようになります。

于 2012-09-27T02:37:11.710 に答える