iOS 手势小记(一)

关于手势的几个属性的记录

关于iOS的事件响应者链的关系hit-testting 寻找最佳响应者大家应该不陌生.但是找到最佳响应者之后,这个touch事件是由手势来消费还是由touch方法优先消费.可能好多人还不太清除呢.

关于这个点,苹果官方文档是有解释的,touch事件会优先交给手势识别,只有手势识别失败之后才会将touch事件交给touch方法消费.

不过很多时候这种默认的处理方式并不能完全满足我们的需求,所以系统手势有三个属性,可以改变这一个默认的行为

手势的属性

delaysTouchesBegan 属性
这个属性默认值为NO,意思就是无论touch事件是交给手势识别还是交给touch方法消费,都会调用touchBegan事件.当这个属性设置为YES的时候,系统会优先把事件交给手势,只有手势识别失败之后才会将touch事件交给touchBegan方法

delaysTouchesEnded 属性
delaysTouchesEnded 属性默认为YES,意思就是touch事件会优先由手势识别,只有手势识别失败之后才将touch事件交给touchend方法.系统这样做是为了确保手势可以取消

cancelsTouchesInView 属性
cancelsTouchesInView 默认值为Yes,意味着当手势系统识别手势成功后,回调touchCancel方法,取消touch事件的传递 .当改为NO 后系统不会回调touchCancel方法

这三个属性可以在我们处理手势和touch事件的时候加以利用,例如我们熟知的IQKeyboardManager这个框架就是利用了cancelsTouchesInView属性使得手势事件可以最后传递到它加到window上的Tap手势,从而控制键盘的起落

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

推荐阅读更多精彩内容

  • 本文主要讲解iOS触摸事件的一系列机制,涉及的问题大致包括: 触摸事件由触屏生成后如何传递到当前应用? 应用接收触...
    baihualinxin阅读 1,225评论 0 9
  • 触摸事件的生命周期 当我们手指触碰屏幕的那一刻,一个触摸事件便产生了。经过进程间通信,触摸事件被传递到合适的应用之...
    Gintok阅读 1,389评论 0 3
  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 57,818评论 51 602
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,090评论 4 26
  • 转载: https://blog.csdn.net/qq871531334/article/details/822...
    NicooYang阅读 1,607评论 0 9