3

我需要在 iOS 上捕获以下触摸事件并对其进行解释:

  1. 手指 A 在 a 内触地UIButton(保持向下)
  2. 手指 B 在屏幕其他位置执行平移手势,提供连续回调。(我打算用 aUIPanGestureRecognizer来实现这个功能)。
  3. 手指在同一区域内进行润色UIButton

从本质上讲,按住按钮UIButton会使应用程序进入一种特殊模式,该模式仅在按住按钮时持续。在此期间执行的平移手势与未按下按钮时执行的操作不同。

到目前为止我已经尝试过:

  • UIButtonTouch Down 和 Touch Up Inside 连接到IBActions我的UIViewController子类中。我也有
    • 遇到的问题:当按下按钮时另一个手指在屏幕上发生另一个手势时,不会调用 Touch Up Inside 操作。这是因为取消了原来的触摸。
  • 附加UITapGestureRecognizerUIButton
    • 遇到的问题:这只在手指离开屏幕时触发,因此在按下按钮时它不能用于将应用程序置于特殊模式。

我需要使用 aUIButton而不是 aUIView以便按钮在按下时具有正确的突出显示行为。

鉴于我迄今为止遇到的问题,最好的整体方法是什么?

4

1 回答 1

1

在“按钮”上使用具有短 minimumPressDuration 的 UILongPressGestureRecognizer http://developer.apple.com/library/ios/#documentation/uikit/reference/UILongPressGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/cl/UILongPressGestureRecognizer

重要的是使用手势识别器委托来确保gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:为这些识别器返回YES。然后,当您的 UIPanGestureRecognizer 调用事件处理程序时,您可以检查您的 UILongPressGestureRecognizer 的状态,如果未按下按钮,则忽略平移手势。

于 2013-07-31T12:04:34.323 回答