子类化UIGestureRecognizer和UILongPressGestureRecognizer

时间:2017-11-14 16:19:15

标签: ios swift uigesturerecognizer

我处于一种情况,我有一个UIView,我已经添加了一个子类UIGestureRecognizer。我使用以下代码;

class ButtonGestureRecognizer: UIGestureRecognizer {

  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) {
    //
    state = .began
  }

  override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent) {
    //
    state = .ended
  }
}

这使我可以捕捉触摸&#34; down&#34;触摸&#34; up&#34;事件,我用来在按下时缩放UIView,并在释放时恢复到正常大小。

我还需要在同一个视图中添加一个UILongPressGestureRecognizer,在按下时它也会向上扩展,并在释放时恢复正常大小,但执行不同的操作。

但是,子类Gesture Recognizer似乎阻止了UILongPressGestureRecognizer的工作。我到目前为止找到的唯一解决方案是放弃我的子类手势识别器,并使用UITapGestureRecognizer(需要将最小点击设置为一个)和UILongPressGestureRecognizer,但后来我放弃了正确检测水龙头/按压开始和结束状态的能力。

有什么方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

有一个名为UIGestureRecognizerDelegate的协议,它有这个方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

如果您遵守该协议并将对象设置为识别器的代理,则可以返回该方法的true,并且您的手势识别器将协同工作。