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

时间:2009-08-20 08:29:55

标签: iphone cocoa-touch uikit

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

2 个答案:

答案 0 :(得分:12)

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

<强> UIControlEventTouchDragExit

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

<强> UIControlEventTouchDragOutside

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

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

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

答案 1 :(得分:6)

<强> UIControlEventTouchDragOutside 手指被拖到控件范围之外的事件。

<强> UIControlEventTouchDragExit 将手指从控件内拖动到其边界之外的事件。

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

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