现在,我正在用iOS创建字典应用程序。在我的应用程序中,我使用了UISearchBar的textDidChange事件和UISearchDisplayController进行自动完成搜索。
所以当我在SearchBar中输入一个单词时,它会自动在数据库中搜索。不过,我在Preferences中有一个关闭AutoComplete搜索的功能。在我关闭了Preferences中的AutoComplete功能后,它仍然是使用TextDidChange事件自动完成搜索。
这次我不想要TextDidChange事件。我想在搜索栏中输入完整的单词,然后单击键盘上的搜索按钮后进行搜索。
那么如何从UISearchBar中关闭TextDidChange事件呢?如果你还好,请让我知道。
诚挚的问候,
发布于 2012-04-16 23:15:19
在您的情况下,您不希望抑制textDidChange事件。相反,您希望UISearchDisplayDelegate的shouldReloadTableForSearchString:方法返回NO,除非单击了Search按钮。
您可以创建一个boolean 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;
}发布于 2012-04-16 23:00:51
根据这一点,你可以搜索或不搜索。
发布于 2012-04-17 01:07:40
- (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
}https://stackoverflow.com/questions/10176540
复制相似问题