uisearchbarは、私が望むときに辞任ファーストレスパンダーに応答しません
-
28-10-2019 - |
質問
Uisearchbarが添付されているuitableviewがあります。ユーザーがキーボードの検索キーをタップしたら、情報を取得するためにサーバーにリクエストを送信します。すべてが正常に動作しますが、辞任ファーストレスパーズは、リクエストが送信されるまでキーボードを閉じません。これが私が持っているものです
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[self.mySearchBar resignFirstResponder];
[self.brain searchInfo: mySearchBar.text];
[self.tableView reloadData];
}
私も使用しようとしました
[self.view endEditing:YES];
しかし、成功せずに...
解決
UIの更新は、Runloopが終了したら実行されます。これは、辞任ファーストレスパンダーがあなたの一度にのみ効果があることを意味します searchBarSearchButtonClicked:
メソッド(および呼び出しメソッド)が終了しました。あなたから searchInfo:
メソッドは応答が得られるまで待たなければなりません。辞任法はそれ以前に効果がありません。
非同期リクエストを送信するnsurlConnectionを使用するようにアプリを書き直します。 Appleには あなたがそれをどのように行うかについての記事. 。それはもっと作業ですが、アプリの品質を向上させるためにこのルートに行く必要があります。
他のヒント
単純なスレッドの問題のように見えます。これを試して...
[searchBar performSelectorOnMainThread:@selector(resignFirstResponder) withObject:nil waitUntilDone:NO];
SearchInfoのようです:メソッドには長い時間がかかります。リクエストが完了したら、非同期に動作し、他の場所でTableViewを更新するように変更できます。
所属していません StackOverflow