Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift UILongPressGestureRecognitor和UIScreenedGepGastureRecognitor_Swift_Uigesturerecognizer - Fatal编程技术网

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
    }
}