Swift,滑动手势识别器方向不起作用,似乎无法获取方向
Swift, swipe gesture recognizer direction doesn’t work, can’t seem to get the direction
编辑:现在滑动手势似乎一次只能朝一个方向移动。如果有人知道同时处理多个方向的另一种方法,我仍然会很感激信息!
Eidt:我在这个 [answer] () 中找到了一种简洁地处理多个方向的方法,它使用带有 forEach 循环的数组文字。比storyboard单独添加手势和拖动动作方便多了。
我正在尝试让 swift 滑动手势正常工作,一切正常,直到我尝试检测滑动的方向。下面是我的代码。我不明白为什么这不起作用,希望得到帮助!
在视图控制器的 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
}
无论我向左或向右滑动,它总是打印“none”。方向打印总是给出“UISwipeGestureRecognizerDirection(rawValue: 3)”
direction
属性 告诉手势何时触发。例如,如果 direction == .right
那么滑动只会在向右滑动时触发。 (它没有告诉你检测到的方向)
您需要一次检测一个方向。我还建议添加一种方法来控制每个滑动方向。例如。
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.
}
希望对您有所帮助!
编辑:现在滑动手势似乎一次只能朝一个方向移动。如果有人知道同时处理多个方向的另一种方法,我仍然会很感激信息!
Eidt:我在这个 [answer] () 中找到了一种简洁地处理多个方向的方法,它使用带有 forEach 循环的数组文字。比storyboard单独添加手势和拖动动作方便多了。
我正在尝试让 swift 滑动手势正常工作,一切正常,直到我尝试检测滑动的方向。下面是我的代码。我不明白为什么这不起作用,希望得到帮助!
在视图控制器的 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
}
无论我向左或向右滑动,它总是打印“none”。方向打印总是给出“UISwipeGestureRecognizerDirection(rawValue: 3)”
direction
属性 告诉手势何时触发。例如,如果 direction == .right
那么滑动只会在向右滑动时触发。 (它没有告诉你检测到的方向)
您需要一次检测一个方向。我还建议添加一种方法来控制每个滑动方向。例如。
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.
}
希望对您有所帮助!