我处于一种情况,我有一个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
,但后来我放弃了正确检测水龙头/按压开始和结束状态的能力。
有什么方法吗?谢谢!
答案 0 :(得分:1)
有一个名为UIGestureRecognizerDelegate
的协议,它有这个方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
如果您遵守该协议并将对象设置为识别器的代理,则可以返回该方法的true
,并且您的手势识别器将协同工作。