没有焦点时如何在SearchBar中单击一次取消按钮

Posted

技术标签:

【中文标题】没有焦点时如何在SearchBar中单击一次取消按钮【英文标题】:How to click Cancel button one time in SearchBar when it's not focus 【发布时间】:2016-04-26 06:05:54 【问题描述】:

我在 NavigationBar 中添加了 SearchBar 视图。

[self.navigationController.view addSubview:self.searchBar];

当我搜索时...

搜索完成...

如果我想取消(删除)搜索栏,我必须点击取消按钮两次才能删除搜索栏。 (一次用于焦点搜索栏,一次用于点击取消)。

如何在 SearchBar 中一键取消类似 (x) 按钮(明文按钮)? 或 SearchBar 如何始终专注? (这样我可以点击取消来关闭搜索栏)

【问题讨论】:

您想在点击取消时隐藏取消按钮吗? 我想通过点击取消按钮一次来关闭(删除)搜索栏。 【参考方案1】:

搜索后不要关闭键盘

删除这一行 [searchBar resignFirstResponder]

会有用的

【讨论】:

【参考方案2】:

将搜索栏委托方法实现为:

- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar 
        self.navigationController.navigationBarHidden = NO;
        [mySearchBar setAlpha:0.0];
    

希望你通过这样做得到了这个想法。如果您愿意,您也可以将其直接添加到导航控制器本身,然后单独显示/隐藏searchBar

【讨论】:

试试这个对你有帮助【参考方案3】:
-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller

    controller.active = YES;

    [self.view addSubview:controller.searchBar];
    [self.view bringSubviewToFront:controller.searchBar];


- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView  

    tableView.frame = self.archiveListTblView.frame;


- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller

    controller.active=NO;

    [self.view addSubview:controller.searchBar];

【讨论】:

【参考方案4】:

当搜索栏从第一响应者那里退出时,取消按钮被禁用。

所以你应该手动启用取消按钮。

试试这个:

[searchBar resignFirstResponder];

[(UIButton *)[searchBar valueForKey:@"_cancelButton"] setEnabled:YES];

【讨论】:

以上是关于没有焦点时如何在SearchBar中单击一次取消按钮的主要内容,如果未能解决你的问题,请参考以下文章

当 navigationItem 的 searchBar 有焦点时如何关闭 ViewController

React本机IOS,当TextInput获得焦点时,按钮按下不注册

如何在颤动中取消焦点文本字段

如何使用 Jquery 使用户从确认框中的输入框中取消焦点?

Swift 2.0 - UISearchBar 取消按钮不删除 searchBar 内容

按 T​​ab 时 NSTextField 没有注意到失去焦点?