25

ビューを実装する UIViewController に UITableView UISearchBar を配置して実装されています。ただし、searchBarCancelButtonClicked を呼び出すことはできません。理由がわからない。

4

10 に答える 10

10

searchBarCancelButtonClicked が起動しない理由は、UISearchBar に [キャンセル] ボタンが表示されていないことが原因である可能性があります。次のように [キャンセル] ボタンを表示できます。

searchBar.showsCancelButton = true

私は同じ問題を抱えていて、キャンセルボタンを表示すると、searchBarCancelButtonClickedが期待どおりに起動しました。

于 2016-01-19T13:25:16.463 に答える
6
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
   // This method has been called when u enter some text on search or Cancel the search.
   // so make some condition for example:

   if([searchText isEqualToString:@""] || searchText==nil) {
        // Nothing to search, empty result.
        searching = NO;
        [mytableView reloadData];
    }
}

それが役に立てば幸い。

于 2011-03-24T07:39:46.943 に答える
6

UIViewController が UISearchBar のデリゲートとして設定されていること、および UISearchBarDelegate プロトコルが採用されていることを確認してください。

于 2010-12-06T16:25:53.613 に答える
1

私の場合、制御されていない userInteractionEnabled=NO でした

于 2016-06-28T22:07:09.213 に答える
0

これをviewDidLoadに入れてみてください。私の場合、キャンセル ボタン アクション デリゲート "searchBarCancelButtonClicked" がトリガーされることもあれば、トリガーされないこともあります (キーボードが閉じられ、キャンセル ボタンがアクティブでなくなる)。これを追加した後、すべてが期待どおりに機能し始めました。

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).isEnabled = true
于 2019-03-19T09:18:44.997 に答える
-3

UIScrollView 内に UISearchBar があるときに、同じ問題に遭遇しました。私が理解しているように、UIScrollView のサブクラスである UITableView 内で質問がありました。

私の場合に役立ったのは設定でした

tableView.delaysContentTouches = NO;

このメソッドは、デフォルト設定である にsearchBarCancelButtonClicked設定されているとうまく機能しないようです。YES

于 2012-08-17T19:15:27.020 に答える