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

标签 ios uibutton uigesturerecognizer uitapgesturerecognizer

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

  1. 手指 A 在 UIButton 内触碰(保持按下)
  2. 手指 B 在屏幕的其他位置执行平移手势,提供连续回调。 (我打算使用 UIPanGestureRecognizer 来实现这个功能)。
  3. 手指 A 在同一 UIButton 上触摸

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

到目前为止我尝试了什么:

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

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

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

最佳答案

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

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

关于ios - 捕获组合的按钮按下和平移手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17968966/

相关文章:

ios - 在编辑 UITableViewCell 时更改标签颜色

objective-c - 如何为 iOS slider 创建自定义旋钮?

swift - 如何在 Swift 中更改 UIButton 的字母间距?

ios - 自定义类型的 UIButton 丢失 Click 事件

ios - Swift - 使用长手势识别器拖放 TableViewCell

ios - 带有 subview 的 UIPinchGestureRecognizer 问题

ios - 什么是 _UITemporaryLayoutWidth 以及为什么它会打破我的限制?

ios - 动态单元格高度问题

ios - 当应用程序从后台进入前台时,UITableViewCell 中的 UIButton 不保留图像?

iphone - 如何可靠地找到 UIGestureRecognizer 的正确 View ?