UISearchController的取消按钮

关于UISearchController的设置就不多说了,可以参考《UISearchController仿微信搜索框》或者自行上网查找。 情况 本人想实现微信通讯录上方的搜索框功能,但在搜索框的取消按钮的设置这个卡住,在网上搜了个遍,没有合适的做法,经过不懈的探索,终于找到解决方案,遂前来记录一下。

方案

添加两个属性

// 记录是否已经找到取消按钮
lazy var hasFindCancelBtn: Bool = {return false
}()
// 定时器(用来定时查找取消按钮)
lazy var link: CADisplayLink = {CADisplayLink(target: self, selector: #selector(findCancel))
}()
复制代码

提供查找并设置取消按钮的方法

func findCancel() {let btn = searchBar.value(forKey: "_cancelButton") as AnyObjectif btn.isKind(of: NSClassFromString("UINavigationButton")!) {LXFLog("就是它")link.invalidate()link.remove(from: RunLoop.current, forMode: .commonModes)hasFindCancelBtn = truelet cancel = btn as! UIButtoncancel.setTitleColor(UIColor.red, for: .normal)cancel.setTitleColor(UIColor.orange, for: .highlighted)}
}
复制代码

代理方法

设置代理为当前控制器,并实现代理方法

searchBar.delegate = self
复制代码
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {if !hasFindCancelBtn {link.add(to: RunLoop.current, forMode: .commonModes)}
}
复制代码

效果

附上相关项目:Swift 3.0 高仿微信

iOS Swift UISearchController的取消按钮相关推荐

  1. IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题

    在iOS开发中,使用UISearchBar的时候,当搜索框失去焦点的时候,取消按钮是默认不能点击的,如图按钮的颜色是灰色的:    这是因为此时取消按钮的enabled属性被设置为NO了,那么当我们需 ...

  2. IOS Swift 入门学习汇总 (更新中..)

    IOS Swift 学习入门 配置区 info 配置 本地化中文 文件导入Xcode CocoaPads 依赖管理工具 UI区 + 代码 通用 打开新页面方式 设置新开页面全屏展示 跳转页面 正向传值 ...

  3. iOS/swift之获取系统所有相册和照片录像、封装相册多选

    参考:http://www.hangge.com/blog/cache/detail_1512.html ios14 使用PHPicker获取相册(需要 import PhotosUI) 支持多选 支 ...

  4. js点击取消按钮关闭当前弹框_UI设计中“取消按钮”的分析详解

    按钮,无论是在 Web 还是 App 上都被广泛地使用,而很少有设计师会注意到按钮当中的细节,导致在设计过程中出现一些低级的错误,使得用户在完成任务的过程中产生阻碍,无法顺利达成目的. 在许多优秀的产 ...

  5. web界面左边菜单设计_前端产品经理难点|“取消按钮”逻辑设计

    3月,写了内容大部分中后台产品.4月份为了满足读者的要求,我会往C端的设计.和细节交互做案例.今天分享一个交互设计师朋友原创的"取消按钮"设计,提出了按钮主管的设计解决方案.召唤观 ...

  6. 【交互设计】如何设计“取消”按钮

    转载自:老二牛车教育 » [交互设计]如何设计"取消"按钮 "取消"这个按钮不属于操作的必要流程,在设计上也不作为主要元素出现.但在实际的弹框或一些操作应用中经 ...

  7. ios swift 聊天_iOS Swift上的加密聊天

    ios swift 聊天 In this tutorial, we'll build encrypted chat on iOS using Swift. We'll combine Stream C ...

  8. 关于搜索栏取消第一响应(取消焦点), 取消按钮不隐藏的解决

    一开始的时候我是这样做的,但发现并没有什么卵用, 虽然占位文字是变了,但取消按钮没反应.还是不隐藏 [_searchController.searchBar  resignFirstResponder ...

  9. iOS Swift 5中的键盘处理

    This article was originally published at CometChat. 本文最初在CometChat上发布. "Handling Keyboard in iO ...

最新文章

  1. oracle的系统和对象权限 与 Oracle 查看用户权限
  2. Android FM模块学习之一 FM启动流程
  3. 计算一个全息图片的两个设想
  4. 在谈PHP中的 抽象类(abstract class)和 接口(interface)
  5. 『ACM-算法-二分法』算法竞赛进阶指南--在单调递增序列a中查找大于等于X的数中最小的一个,即X或X的后继
  6. 计算机安全可靠替代工程,基于安全可靠软硬件的党政军OA系统的整系统优化方法与研究-计算机技术专业论文.docx...
  7. python手机解释器_python3
  8. 生肖牛年元素新年促销电商PSD分层页面模板|妥妥过年!
  9. Python使用逻辑回归算法根据三围数据判断用户性别
  10. 每天开豪车跟随老板出入高档会所,吃住高档酒店,这样的职场生活,有必要坚持下去吗?
  11. 一年之后 重温旧“梦”
  12. WCF中常见的几种Host,承载WCF服务的方法
  13. theano 编程技巧
  14. hdu 1232 畅通工程(并查集)
  15. 2台主机极致实现双主复制架构及MMM
  16. 【优化算法】改进定步长与变步长LMS算法【含Matlab源码 629期】
  17. node2vec的一些理解
  18. SQLmap————10、sqlmap详细命令
  19. WorldPress 设置固定连接 Apache 服务器无法打开网页(100%解决这个问题)
  20. 先有鸡还是先有蛋?应用程序开发与安全

热门文章

  1. SpringMVC基础——一个简单的例子
  2. xUtils简介及其使用方法
  3. php消费rabbitmq消息QoS,简介Rabbitmq的几种消费模式
  4. iOS架构-组件化入门(1)
  5. delphi listview 获取行高_《我的侠客》布料怎么获得 布料获取方法
  6. Nodejs开发微信公众号中控服务
  7. phpstudy集成环境安装redis扩展
  8. 常见的音视频封装和编码
  9. 喵哈哈村的魔法考试 Round #5 (Div.2) C
  10. java中的浮点计算