如何关闭iOS中的TextDidChange事件?

时间:2012-04-16 14:56:29

标签: objective-c ios

现在我在iOS中创建字典应用程序。 在我的应用程序中,我使用UISearchBar的textDidChange事件和UISearchDisplayController进行自动完成搜索。

因此,当我在SearchBar中输入一个单词时,它会自动在数据库中搜索。 但是,我在首选项中有一个功能来关闭自动完成搜索。 在我关闭首选项中的自动完成功能后,它仍然使用TextDidChange事件自动完成搜索。

这次我不想要TextDidChange事件。我想在搜索栏中输入完整单词后再搜索,然后点击键盘上的搜索按钮。

那么如何从UISearchBar关闭TextDidChange事件? 如果你没问题,请告诉我。

最诚挚的问候,

3 个答案:

答案 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 
       }