UITextField,UITextView等控件触摸背景关闭键盘

使用textField和textView时在模拟器上没有办法关闭键盘,这是刚开始比较容易碰到的问题,有几个方法,但核心都是textField,textView放弃第一响应者,即调用resignFirstResponder方法。

方法一:

给textField添加一个Did End On Exit事件,这是在textField输入完毕,点击键盘Done按钮后,会触发的事件。


截图1

方法二:

比较笨拙的方法,放一个覆盖整个视图的透明按钮,将其置于视图最底层,添加事件Touch Down或Touch Up Inside(后面讲区别),实现这个方法:


截图2

方法三:(从《精通iOS开发》 (第7版)David Mark, Jack Nutting等著] 这本书中学习到 )

将view所指向的对象所属的类由UIView改为UIControl(UIControl是UIView的子类)

截图3
截图4

修改后就可以看到,view也可以添加事件了:

截图5
截图6

Touch Up Inside和Touch Down的区别:

Touch Up Inside是按钮最常用的响应事件,意思是点击了按钮,松开手后仍然停留在按钮的范围内才会触发。我们很多人都有这样一种体验,就是点击了按钮,然后突然间又不想这么做了,就把手挪开到别的地方再松开,它就没有触发任何事件,它给予用户再次考虑的机会。
Touch Down是点击了之后,马上触发事件。如果是使用第2、第3种方法,响应这个事件会更加合理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1,点击事件和touch事件的关系 自定义UIButton并在其中重写以下方法: 添加UIButton并监听UIC...
    喵子G阅读 7,046评论 3 15
  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,629评论 51 604
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,180评论 4 26
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • 昨天下午,阴沉沉的天空,在这样的天气里,小太郎走了,陪伴我十六年的伙伴儿,我的猪八戒小太郎因为手术麻醉失误,也...
    or_is_fffff阅读 596评论 0 0