2

上部にUITableViewを含む iPhone アプリがあります。UISearchBarユーザーが に入力するとUISearchBarUITableViewのコンテンツが適切にフィルタリングされます。ユーザーが検索バーのすべてのテキストを削除UISearchBarすると、ファーストレスポンダではなくなり、テーブルビューは再びフィルタリングされなくなります。関連するデリゲート コードは次のとおりです。

- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    if(searchBar.text.length == 0)
    {
        [self.searchBar resignFirstResponder];
        [self.myModel stopFiltering];
        [self.tableView reloadData];
    }
}

これに関する問題は、ユーザーが自分の電話に話しかけ、検索バーで (Siri を介して) 音声からテキストへの変換を行おうとすると、textdidChangeメソッドが検索テキストとして空の文字列を返すことです。したがって、ユーザーが電話に向かって話しているのか、それともフィールド内のすべてのテキストを削除したのかを知る方法はありません。この動作は予期されたものですか?

4

2 に答える 2

1

これを試して、に入ることができるかどうかを確認してくださいIF statement

 - (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
    {
        if([searchText length]== 0)
        {
            [self.searchBar resignFirstResponder];
            [self.myModel stopFiltering];
            [self.tableView reloadData];
        }
    }
于 2013-04-06T02:10:05.600 に答える
0
if([searchText length]> 0)
{
    [self searchTableView];
}
else
{
    [self btncloseClicked];

}

- (void)btncloseClicked
{
    [YourSearchBar performSelector: @selector(resignFirstResponder) withObject: nil afterDelay: 0.1];
    [table_View reloadData];
}
于 2013-04-06T06:05:18.590 に答える