ビューを実装する UIViewController に UITableView UISearchBar を配置して実装されています。ただし、searchBarCancelButtonClicked を呼び出すことはできません。理由がわからない。
10 に答える
searchBarCancelButtonClicked が起動しない理由は、UISearchBar に [キャンセル] ボタンが表示されていないことが原因である可能性があります。次のように [キャンセル] ボタンを表示できます。
searchBar.showsCancelButton = true
私は同じ問題を抱えていて、キャンセルボタンを表示すると、searchBarCancelButtonClickedが期待どおりに起動しました。
- (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];
}
}
それが役に立てば幸い。
UIViewController が UISearchBar のデリゲートとして設定されていること、および UISearchBarDelegate プロトコルが採用されていることを確認してください。
私の場合、制御されていない userInteractionEnabled=NO でした
これをviewDidLoadに入れてみてください。私の場合、キャンセル ボタン アクション デリゲート "searchBarCancelButtonClicked" がトリガーされることもあれば、トリガーされないこともあります (キーボードが閉じられ、キャンセル ボタンがアクティブでなくなる)。これを追加した後、すべてが期待どおりに機能し始めました。
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).isEnabled = true
UIScrollView 内に UISearchBar があるときに、同じ問題に遭遇しました。私が理解しているように、UIScrollView のサブクラスである UITableView 内で質問がありました。
私の場合に役立ったのは設定でした
tableView.delaysContentTouches = NO;
このメソッドは、デフォルト設定である にsearchBarCancelButtonClicked
設定されているとうまく機能しないようです。YES