iphone - 如何在不激活 UISearchDisplayController 的情况下在 UISearchBar 中设置文本

标签 iphone ios uisearchdisplaycontroller

我在我的应用程序中使用 UISearchDisplayController。当用户在返回的搜索结果中选择一个项目时,我停用了 UISearchDisplayController。停用 Controller 会清除用户输入的文本。我想把它放在那里。我可以通过在 Controller 停用后再次设置它来强制将文本返回到 UISearchBar 中。

像这样:

NSString* searchText = self.searchDisplayController.searchBar.text;
[self.searchDisplayController setActive:NO animated:YES];
self.searchDisplayController.searchBar.text = searchText;

哪个有效。

但是,如果我不为 deactivate 调用设置动画,我会发现计时问题。呼唤 像这样设置事件:

NSString* searchText = self.searchDisplayController.searchBar.text;
[self.searchDisplayController setActive:NO animated:NO];
self.searchDisplayController.searchBar.text = searchText;

使 UISearchDisplayController 再次激活!

有没有一种方法可以设置 UISearchBar 的文本,而无需激活与其关联的 UISearchDisplayController?还有其他解决此行为的建议吗?

最佳答案

对于任何想知道如何做到这一点的人,我设法通过在我的委托(delegate)中添加它来让它工作:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    if(!controller.isActive){
        controller.searchResultsTableView.hidden = YES;
        return NO;
    }
    controller.searchResultsTableView.hidden = NO;

    [....]

    return YES;
}

关于iphone - 如何在不激活 UISearchDisplayController 的情况下在 UISearchBar 中设置文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316033/

相关文章:

ios - 升级到 Xcode 6.3 后,启动时出现错误 : "The Bonjour service could not be resolved."

ios - native Controller 的 preferredStatusBarStyle

ios6 - UISearchBar 在 iOS 6 上不接受键盘输入但接受 Siri 输入

ios - 将应用程序提交到应用程序商店时的 iTunes 测试飞行问题

ios - NSRunLoop cancelPerformSelectorsWithTarget 不工作

ios - 圆形下载进度状态图标

ios - UISearchDisplayController:取消为关闭按钮

iphone - 自定义UIControl在滚动时获取touchesCancelled;如何禁用滚动?

iphone - 如何在 xcode 4.2.1 控制台窗口中显示日志消息

iphone - 排除 UISpec 中的代码