以编程方式重置UISearchbar

时间:2012-01-18 23:45:23

标签: iphone ios uisearchbar

是否有可能以编程方式重置具有searchDisplayController的UISearchbar,该活动已包含文本?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if (tableView == self.searchDisplayController.searchResultsTableView) {
       searchDisplayController.searchResultsTableView.hidden = YES;
       searchBar.showsCancelButton = NO;
       [searchBar resignFirstResponder];
    }
}

此解决方案正常运行,但searchBar中仍有文本。如果我添加这些代码行:

searchBar.text = @"";

总是留下黑色透明视图。

任何解决方案?

6 个答案:

答案 0 :(得分:6)

你好。这是用户点击取消时调用的委托方法。如果您想以不同方式连接它,只需将搜索栏声明为插座并引用它即可。无论如何:

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    searchBar.text = @"";
    [searchBar resignFirstResponder];   
}

答案 1 :(得分:4)

非常确定您正在寻找的是UISearchDisplayController.active

从SDK:

@property(nonatomic, getter=isActive) BOOL active

如果直接设置此值,则无需动画即可执行任何更改。使用setActive:animated:如果状态更改应设置动画。

当用户专注于托管搜索栏的搜索字段时,搜索显示控制器会自动显示搜索界面。您可以使用此属性强制显示搜索界面。

答案 2 :(得分:1)

这个线程太老了,它有灰尘。仍然在这里我们很快就这样

<#your UISearchController variable#>.isActive = false

答案 3 :(得分:0)

你不必退出firstResponder

答案 4 :(得分:0)

[self.searchBar resignFirstResponder]

答案 5 :(得分:0)

您也可以显式隐藏resultsTableView,如果这是您想要的:

searchDC.searchResultsTableView.hidden=YES;

(searchDC是UISearchDisplayController的一个实例)

这将帮助您隐藏取消按钮和内容:http://www.alexandre-gomes.com/?p=418