Swift UILongPressGestureRecognitor和UIScreenedGepGastureRecognitor
我正在使用Swift UILongPressGestureRecognitor和UIScreenedGepGastureRecognitor,swift,uigesturerecognizer,Swift,Uigesturerecognizer,我正在使用UIScreenedGepangestureRecognitor更改视图,在其中一个视图中,我可以使用UILongPressGestureRecognitor(最短持续时间为0)移动表中的行。问题是,这个按下手势位于屏幕边缘,因此我必须配置代理,使其正常工作 已设置按下手势的代表: override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRe
UIScreenedGepangestureRecognitor
更改视图,在其中一个视图中,我可以使用UILongPressGestureRecognitor
(最短持续时间为0)移动表中的行。问题是,这个按下手势位于屏幕边缘,因此我必须配置代理,使其正常工作
已设置按下手势的代表:
override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return otherGestureRecognizer is UIScreenEdgePanGestureRecognizer
}
这在模拟器中运行良好(因为室内油漆工更精确),但在设备本身上则不太可靠。我可以毫无问题地更改视图,但移动行仍然有点棘手
所以我把它改成:
override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return gestureRecognizer is UILongPressGestureRecognizer && otherGestureRecognizer is UIScreenEdgePanGestureRecognizer
}
现在两个动作都很好,但很明显,两个动作同时起作用,这是我不想做的。我尝试设置一个条件,如果平移手势的x轴速度大于0,则按下手势失败,但此时按下手势已经开始。可以做的一件事是在每个手势识别器中添加一个
标记,然后执行以下操作:
func doSomething(sender: UIGestureRecognizer) {
if sender.tag == 1 {
// do this
} else {
// do that
}
}