美文网首页
UISearchBar 失去第一响应者之后的 Cancel 按钮

UISearchBar 失去第一响应者之后的 Cancel 按钮

作者: 倾兰特 | 来源:发表于2017-07-31 14:55 被阅读130次

背景

在项目中的一个搜索页面,导航栏是 UISearchBar,搜索页和结果页都在当前 Controller 中显示。

操作流程

  • 输入文字点击 Search 按钮,或点击页面中的搜索历史
  • 展示搜索结果,UISearchBar 失去第一响应者
  • 点击 UISearchBar 的 Cancel 按钮
  • 弹出键盘
  • 再次点击 UISearchBar 的 Cancel 按钮
  • 调用 delegate 方法:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

在这里,delegate 方法中需要 pop 页面,而在展示搜索结果后,也就是 UISearchBar 失去第一响应者后,需要点击两次才能调用方法,不符合需求。

原因

因为在此时,Cancel 按钮的 enabled 属性被设置为 NO,如果想保持可以点击,需要在搜索框失去焦点的地方设置其 enabled 为 YES。

解决办法

//  设置取消按钮为可用状态
UIButton *cancelBtn = [self.searchBar valueForKey:@"cancelButton"]; 
cancelBtn.enabled = YES;

将这两行代码放置 UISearchBar 失去第一响应者之后即可。

相关文章

网友评论

      本文标题:UISearchBar 失去第一响应者之后的 Cancel 按钮

      本文链接:https://www.haomeiwen.com/subject/kucrlxtx.html