1

と がNSTextViewありusesFindBar = YESますincrementalSearchingEnabled = YES。⌘F を押して検索バーを呼び出し、Esc キーを押して検索バーを非表示にするとself.window.firstResponder、テキスト ビューのままでもフォーカスがテキスト領域に戻りません (タイマーで印刷しました)。ただし、タブを押すとフォーカスがエディターに戻ります。どうすれば自動的にそれを行うことができますか?

4

3 に答える 3

1

Ok。私はこれを解決しました。私のタスクは少し異なりましたが、これはあなたや他の人にとって非常に役立つと思います.

これは、findBar の表示/非表示のイベントを検出する方法です。

1) をサブクラス化しNSScrollView、メソッドをオーバーライドします-(void)tile

注: _findBarIsVisibleは、最初に NO に設定された iVar です。

- (void)tile
{
    [super tile];

    // check if findBar did showUp or disappeared
    CGFloat fullHeight = self.bounds.size.height;
    CGFloat clipHeight = self.contentView.bounds.size.height;

    if (!_findBarIsVisible && fullHeight > clipHeight)
    {
        _findBarIsVisible = YES;
        NSLog(@"findBarIsVisible: %d", _findBarIsVisible);
    }
    else if (_findBarIsVisible && fullHeight == clipHeight)
    {
        _findBarIsVisible = NO;
        NSLog(@"findBarIsVisible: %d", _findBarIsVisible);
    }
}

これで、findBar を切り替えるイベントができました。ここに必要なコードを入力するか、イベントについてコントローラーに通知するだけです (私が行ったように)。

あなたの場合、次のようなことをすべきだと思います:

[self.window makeFirstResponder:self.documentView];

findBar が非表示になるセクションで。

幸運を!

于 2014-09-06T16:03:41.137 に答える
0

iOS 開発でも同様の問題が発生しました。以前firstResponder使用していた UI 要素からフラグが正しく「取得」されていないようでした。に焦点を当てたときにプログラムfirstResponderから辞任することで解決し、手動で割り当てました。これは完璧に機能しました。それが役立つことを願っています!UITextfieldUISearchBar

于 2013-06-22T01:29:32.527 に答える