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

我在 NavigationBar 中添加了 SearchBar 视图。

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

当我搜索时...

搜索完成...

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

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

【问题讨论】:

  • 您想在点击取消时隐藏取消按钮吗?
  • 我想通过点击取消按钮一次来关闭(删除)搜索栏。

标签: ios objective-c iphone uinavigationbar uisearchbar


【解决方案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];
      

      【讨论】:

        猜你喜欢
        • 2017-12-14
        • 1970-01-01
        • 2016-01-25
        • 2013-10-03
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多