编辑:现在,滑动手势一次只能沿一个方向移动。如果有人知道同时处理多个方向的另一种方法,我仍然会很感激!
Eidt:在此[answer](https://stackoverflow.com/a/46104997/9645644)中,我找到了一种简洁地处理多个方向的方法,它使用带有forEach循环的数组文字。这比情节提要中单独添加手势和拖动动作要方便得多。
我正在尝试使用快速滑动手势来工作,在我尝试检测滑动方向之前,一切都很好。下面是我的代码。我不明白为什么这行不通,请多多关照!
在视图控制器的viewDidLoad中,我设置并添加了方向为[.left,.right]的滑动手势识别器。之后,我实现了需要检测滑动方向的处理程序方法。该视图控制器中没有其他内容。 在无法正常工作(滑动时无响应)之后,我添加了一些打印件,并将输出显示在标题中。
override func viewDidLoad() {
super.viewDidLoad()
let swipeGestureRecognizer = UISwipeGestureRecognizer(target:self, action:#selector(swipeHandler(recognizer: )))
swipeGestureRecognizer.direction = [.left, .right]
view.addGestureRecognizer(swipeGestureRecognizer)
}
@objc func swipeHandler (recognizer: UISwipeGestureRecognizer){
switch recognizer.state{
case .ended:
let direction = recognizer.direction
print(direction)
if direction == .left {print(”left”)}
else if direction == .right {print(“right”)}
else {print(print(“none”)}
defaul: break
}
无论我向左或向右滑动,它总是打印“无”。并且方向打印始终给出“ UISwipeGestureRecognizerDirection(rawValue:3)”
答案 0 :(得分:0)
direction
属性告诉手势何时触发。例如,如果direction == .right
,则滑动只会在向右滑动时触发。 (它不会告诉您检测到的方向)
答案 1 :(得分:0)
您需要一次检测一个方向。我还建议添加一种方法来控制每个滑动方向。例如。
func setUpGestures() {
// Gesture that define a left swipe.
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(Scene.swipeLeft))
swipeLeft.direction = .left
view?.addGestureRecognizer(swipeLeft)
// Do the same for the rest of the directions.
}
@objc func swipeLeft() {
// Do something when the user swipe left.
}
希望有帮助!