有原则的特立独行 uicontroleventdragExit

今天尝试对 UIButton的各个事件进行了一番触发以了解各事件触发的时机,一个长久以来的疑惑再次浮出水面,此疑惑始于现象:在按钮上按下,并向外拖拽,在手指已经完全拖出按钮范围之后,仍然在不断触发 UIControlEventTouchDragInside, 且在向外拖行很长一段距离(stackoverflow上的数据是大约100px)之后,才触发UIControlEventTouchDragExit(其间会触发UIControlEventTouchDragOutside)

大致原因是touch的这块extra area是控件的内建属性,用来消弭使用手指与界面进行交互的不精确性。要实现对这块extra area的区域的自定义,需要派生 UIControl 并重载 (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event以及 (BOOL)continueTrackingWithTouch:(UITouch*)touch withEvent:(UIEvent*)event,上stackoverflow看看解决方案吧

另外在调的过程中发现另一个有趣的问题,那就是如果UIButton的父View为占满整个屏幕的View,不会触发UIControlEventTouchDragExit。。。

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

推荐阅读更多精彩内容