我正在使用UIScreenEdgePanGestureRecognizer
更改视图,在其中一个视图中,我可以使用UILongPressGestureRecognizer
(最短持续时间为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,我尝试设置条件使按下手势失败,但到那时按下手势已经开始。
答案 0 :(得分:0)
您可以做的一件事是为每个手势识别器添加tag
并执行以下操作:
func doSomething(sender: UIGestureRecognizer) {
if sender.tag == 1 {
// do this
} else {
// do that
}
}