捕获组合按钮按下和平移手势

时间:2013-07-31 11:22:20

标签: ios uibutton uigesturerecognizer uitapgesturerecognizer

我需要在iOS上捕获以下触摸事件并解释它们:

  1. 手指A在UIButton内停留(保持向下)
  2. 手指B在屏幕的其他位置执行平移手势,提供连续的回调。 (我计划使用UIPanGestureRecognizer来实现此功能。)
  3. 手指A在同一UIButton
  4. 内修饰

    本质上,按住UIButton会将应用程序置于一种特殊模式,只有按住该按钮才会持续。在此期间执行的平移手势与未按下按钮时的操作不同。

    到目前为止我尝试过:

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

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

    考虑到我到目前为止遇到的问题,最佳整体方法是什么?

1 个答案:

答案 0 :(得分:1)

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

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