现在我在iOS中创建字典应用程序。 在我的应用程序中,我使用UISearchBar的textDidChange事件和UISearchDisplayController进行自动完成搜索。
因此,当我在SearchBar中输入一个单词时,它会自动在数据库中搜索。 但是,我在首选项中有一个功能来关闭自动完成搜索。 在我关闭首选项中的自动完成功能后,它仍然使用TextDidChange事件自动完成搜索。
这次我不想要TextDidChange事件。我想在搜索栏中输入完整单词后再搜索,然后点击键盘上的搜索按钮。
那么如何从UISearchBar关闭TextDidChange事件? 如果你没问题,请告诉我。
最诚挚的问候,
答案 0 :(得分:2)
在你的生活中,你不想压制textDidChange事件。相反,除非单击“搜索”按钮,否则您希望UISearchDisplayDelegate的shouldReloadTableForSearchString:
方法返回NO
。
你可以创建一个布尔值的ivar来跟踪它。调用textDidChange
时将ivar设置为NO,并在调用searchBarSearchButtonClicked:
时将其设置为YES。然后在shouldReloadTableForSearchString:
中,您可以进行测试。
编辑:通过扩展代码示例澄清。 (在这个例子中,我假设你已经设置了一个名为isSearchButtonClicked的ivar。)
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
isSearchButtonClicked = NO;
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
isSearchButtonClicked = YES;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
// returns YES if search button was clicked, otherwise return NO
return isSearchButtonClicked;
}
答案 1 :(得分:1)
你总是可以创建一个bool变量并检查是否自动完成...基于你可以搜索或不搜索。
答案 2 :(得分:1)
- (void)filterContentForSearchText:(NSString*)searchText
scope:(NSString*)scope
{
//create a bool variable and check is Auto Complete searching is Yes or No
if YES then pass searchText
if no then Don't pass any thing unit user press the search button
after he press search button pass searchText
}