我想设置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
等所有情况下尝试了您以前尝试过的方法。但是即使未调用目标操作方法,也未获得任何成功。