的UIScreenEdgePanGestureRecognize

的UIScreenEdgePanGestureRecognize

我想设置EdgePanGesture来在用户从左侧或右侧滑动时更改ViewController。
仅通过一个方向,它就可以完美运行:

func addingEdgePanDetection() {
    let edgePan = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(screenEdgeSwiped))
    edgePan.edges = .left
    view.addGestureRecognizer(edgePan)
}

但是,正如您可以在Apple文档中看到的那样,UIRectEdge类型是Edge,它符合de OptionSet协议,因此

您可以将这些常数加在一起,以在
同时。

我尝试了三种不同的想法,但均未成功:
1.- edgePan.edges = [UIRectEdge.left, UIRectEdge.right]
2.- edgePan.edges = UIRectEdge.left | UIRectEdge.right
3.- edgePan.edges = UIRectEdge(rawValue: UIRectEdge.left.rawValue | UIRectEdge.right.rawValue)

任何想法?我正在寻找一个只有一个actionRecognizer的答案。谢谢!

最佳答案

使用两个不同的UIScreenEdgePanGestureRecognizer,以允许用户从左右方向滑动。

var screenLeftEdgeRecognizer: UIScreenEdgePanGestureRecognizer!
var screenRightEdgeRecognizer: UIScreenEdgePanGestureRecognizer!

在ViewDidLoad中:
screenLeftEdgeRecognizer = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(rotateBall(_:)))
screenLeftEdgeRecognizer.edges = .left
view.addGestureRecognizer(screenLeftEdgeRecognizer)

screenRightEdgeRecognizer = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(rotateBall(_:)))
screenRightEdgeRecognizer.edges = .right
view.addGestureRecognizer(screenRightEdgeRecognizer)

练习:

我已经在左,右,上,下,像screenRightEdgeRecognizer.edgePan.edges = .all等所有情况下尝试了您以前尝试过的方法。但是即使未调用目标操作方法,也未获得任何成功。

10-08 19:09