0

特定の機会にのみ表示される NSView で構成される NSWindow があります。この NSView は NSSearchField で構成され、クリップボードにデータがある場合は検索フィールドに表示されます。それ以外の場合は空になります。 SearchField に Data があります。フォーカスがあるはずです。次のように試しました。

NSViewController クラスには、クラス変数である NSSearchField を返す関数があります

              -(NSSearchField*)getSearchField
                  {
                  return searchField;
                  } 

NSWindowController クラスでは、pSearchContact が NSViewController クラスのインスタンス変数であるファースト レスポンダーを作成しています。

      [[self window] makefirstResponder:[pSearchContact getSearchField]];

スムーズに実行されていますが、searchField がフォーカスされない理由がわかりません

私の場合、searchFieldはNSWindowにあるNSViewにあるため、searchFieldのようなものはNSWindowの一部である場合にのみファーストレスポンダーになります。

前もって感謝します

4

2 に答える 2

0

あなたの質問は少し紛らわしいですが、あなたが求めていることは、「検索フィールドをフォーカスできないのはなぜですか?」に要約されると思います。

その1行のコード:

[[self window] makefirstResponder:[pSearchContact getSearchField]];

私の快適さのためにそれを少しやりすぎています(つまり、それほど多くの機能を埋め込まないでください-その一部がうまくいかなかったり、混乱したりする可能性があります-1行のコードに)。

次のようにしてみてはどうでしょうか。

NSWindow * myWindow = [self window];
if(myWindow)
{
    if(pSearchContact)
    {
        NSResponder * ourSearchField = [pSearchContact getSearchField];
        if(ourSearchField)
        {
            [myWindow makeFirstResponder: ourSearchField];
        } else {
            NSLog( @"ourSearchfield is nil; why?" );
        }
    } else {
        NSLog( @"pSearchContact is nil; why?" );
    }
} else {
    NSLog( @"myWindow is nil; why?" );
}

これにより、フォーカス設定が機能しない理由を絞り込むこともできます。

于 2012-07-04T05:47:47.650 に答える