[iOS学习]搜索框(UISearchController)最近踩过的坑
来源:互联网 发布:电子书包软件下载 编辑:程序博客网 时间:2024/06/06 01:15
坑点一:新页面回跳,searchBar有闪烁现象
解决思路:猜测应该是searchBar呈现过程中,颜色变换造成的闪烁
解决方案:去除searchBar中的中间层的UIView(查资料所得,具体地址未记录,原作者请见谅)
代码:
for (UIView *view in self.searchController.searchBar.subviews) {. //self.searchController.searchBar 更改为自己的searchBar // for later iOS7.0(include) if ([view isKindOfClass:NSClassFromString(@"UIView")] && view.subviews.count > 0) { [[view.subviews objectAtIndex:0] removeFromSuperview]; break; }}
坑点二:跳转到新页面使searchBar成为第一响应者的时间点问题
解决思路:延迟设置,使searchBar必定能成为第一响应者
解决方案:当页面出现后再延迟设置(来自ios - Cannot set searchBar as firstResponder - Stack Overflow)
代码:
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self performSelector:@selector(showKeyboard) withObject:nil afterDelay:0];}- (void)showKeyboard { [self.searchController.searchBar becomeFirstResponder];}
坑点三:UISearchController中的searchBar的cancel按钮问题
需求方案一:修改cancel按钮文字,监听按钮点击事件
效果:自带的cancel按钮点击后会消失,编辑时又出现,个人感觉不怎么样
来源:CocoaChina上的某一篇问答中,具体未查找到,请原作者勿怪
代码:
self.searchController.searchBar.showsCancelButton = YES; //这个必须设置,不然无法达到效果,具体原因未知(猜测是需要设置显示才能拿到按钮)UIButton *canceLBtn = [self.searchController.searchBar valueForKey:@"cancelButton"];[canceLBtn setTitle:@"搜索" forState:UIControlStateNormal];[canceLBtn setTitleColor:[UIColor colorWithRed:0.965 green:0.290 blue:0.608 alpha:1.00] forState:UIControlStateNormal]; //设置颜色自便,也可添加点击事件响应
需求方案二:隐藏cancel按钮,自己写按钮
效果:效果挺不错,看着舒服多了
来源:ios - iOS8 Cannot hide cancel button on search bar in UISearchController - Stack Overflow
代码:
// 重写UISearchController中的代理方法,设置不显示cancelBtn// 我尝试过很多地方写隐藏cancel,不过只有这边管用,应该这边触发的最晚,所以成功了- (void)didPresentSearchController:(UISearchController *)searchController { searchController.searchBar.showsCancelButton = NO;}
原作者:Orangebb
链接:http://www.jianshu.com/p/5a2f6126508f
阅读全文
0 0
- [iOS学习]搜索框(UISearchController)最近踩过的坑
- ios搜索框功能的实现/UISearchBar/UISearchController的使用
- IOS-搜索功能实现, UIsearchController的使用
- iOS的实时搜索:UISearchBar与UISearchController
- iOS - UISearchController搜索框与NSPredicate谓词
- iOS开发——搜索框(UISearchController)
- iOS - Swift UISearchController仿微信搜索框
- iOS - Swift UISearchController仿微信搜索框
- iOS--搜索UISearchController&&UISearchDisplayController
- iOS: 搜索控件UISearchController
- iOS学习爬坑记录4:ios8中的搜索栏,使用UISearchController
- IOS 用UISearchController搜索Tableview
- iOS开发-搜索栏 UISearchController
- iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UISearchDisplayController的组合)
- iOS - 搜索框UISearchController的使用(iOS8.0之后替代UISearchBar + UISearchDisplayController的组合)
- IOS中UISearchController搜索框筛选功能实现
- iOS个人整理21-UISearchController搜索框与NSPredicate谓词
- UISearchController搜索框偏移问题 - 芒果iOS开发
- 机器学习第一章:基本概念
- C++ Windows API 实现多线程
- oradebug--记录
- [book]《科技想要什么》
- codeforces852GBathroom terminal解题报告
- [iOS学习]搜索框(UISearchController)最近踩过的坑
- Vue-Router2.X多种路由实现方式
- 数据库并发操作带来的问题以及解决方案
- mybatis一对一的三种实现方式 数据准备: 使用mysql数据库作为测试。建表语句及测试数据: CREATE TABLE `classes` ( `class_id` int(11) NOT
- mybatis的jdbcType和javaType、oracle,MySQL的对应类型
- 映射规则4
- ios返回指定页
- sqlplus登录,报错,ORA-12154: TNS:could not resolve the connect identifier specified
- 安装Vue.js