Ios 如何设置具有两条边的UIScreenedGepangestureRecognitor

Ios 如何设置具有两条边的UIScreenedGepangestureRecognitor,ios,swift,swipe,gesture,edges,Ios,Swift,Swipe,Gesture,Edges,我想设置EdgePanGesture,以便在用户从左或右方向滑动时更改我的ViewController。 只有一个方向,它工作得非常完美: func addingEdgePanDetection() { let edgePan = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(screenEdgeSwiped)) edgePan.edges = .left view.addGestureR

我想设置EdgePanGesture,以便在用户从左或右方向滑动时更改我的ViewController。 只有一个方向,它工作得非常完美:

func addingEdgePanDetection() {
    let edgePan = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(screenEdgeSwiped))
    edgePan.edges = .left
    view.addGestureRecognizer(edgePan)
}
但是,正如您在苹果的文档中所读到的,Edge是UIDirectEdge类型,它符合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)

有什么想法吗?我正在寻找一个只有一个手势识别器的答案。谢谢

使用两种不同的
UIScreenedGepangestureRecognitor
s,允许用户从左右方向刷卡

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
等,但都没有成功,即使目标动作方法没有被调用。

这里的“不成功”是什么意思?这意味着手势没有朝任何方向工作!谢谢你的回答。你是对的,但我只想在手势识别器上创建两个方向。也许这是不可能的@这是不可能的。尽管属性的名称是复数,尽管
uirectredge
是一个
OptionSet
uiscreenedgepangestureerecognizer
仅适用于一条边,因此您必须创建两个手势识别器。如果需要,两者都可以使用相同的选择器。