UIControlEventTouchDragOutside和UIControlEventTouchDragExit之间的区别在哪里?

2 iphone cocoa-touch uikit

两者似乎都具有完全相同的效果.当手指离控制器足够远时,它们都来了."bounds"实际上并不是UIControlEventTouchDragExit的标准.它只有在距离足够远时才被解雇......

wal*_*rad 12

我来到这里寻找同样的事情,eOgas的答案似乎并不准确.我做了我自己的测试用例,这里是我想要详细答案的人的结果,而不必亲自测试:

UIControlEventTouchDragExit

  • 当用户离开他们按下的控件时,只调用一次.一旦用户在UIButton(例如)之外打破"魔法边界"*,该事件就会被调用一次.如果在拖动时,用户拖回控件并再次退出,则会再次调用此事件.反向可以应用于UIControlEventTouchDragEnter.

UIControlEventTouchDragOutside

  • UIControlEventTouchDragExit之后调用并在每次用户拖动手指时重复调用,同时仍然按住用于进入控件的原始触摸.对于那些熟悉UIView 的touchesMoved方法的人来说,它的工作方式类似.反过来可以应用于UIControlEventTouchDragInside但是这显然可以在不必先退出控件的情况下调用.

为了更好地理解或记住,您可以将这些事件与离开(和来到)他们的房子的人进行比较,其中他们只退出房子一次,然后继续向外移动.此外,一个人只进入他们的房子一次,但然后反复进入内部.

*UIControl对象周围的额外空间,考虑到用户不精确触摸的可能性.


eog*_*gas 6

UIControlEventTouchDragOutside 手指在控件边界外拖动的事件.

UIControlEventTouchDragExit 手指从控件内拖动到其边界外的事件.

听起来像UIControlEventTouchDragOutside在用户触摸边界外时触发,无论手指是否在边界内.仅当手指从边界内拖动到边界外时才会触发UIControlEventTouchDragExit.

因此,在调整控件大小(边缘点击,然后拖动)时将使用UIControlEventTouchDragOutside,而UIControlEventTouchDragExit将用于移动控件(点击内部并拖动).