質問

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を更新するように変更できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top