と がNSTextView
ありusesFindBar = YES
ますincrementalSearchingEnabled = YES
。⌘F を押して検索バーを呼び出し、Esc キーを押して検索バーを非表示にするとself.window.firstResponder
、テキスト ビューのままでもフォーカスがテキスト領域に戻りません (タイマーで印刷しました)。ただし、タブを押すとフォーカスがエディターに戻ります。どうすれば自動的にそれを行うことができますか?
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
から辞任することで解決し、手動で割り当てました。これは完璧に機能しました。それが役立つことを願っています!UITextfield
UISearchBar
于 2013-06-22T01:29:32.527 に答える