Swift 3 中的滑动手势 [英] Swipe gesture in Swift 3
问题描述
我正在尝试让 UISwipeGestureRecognizer 在 Swift 3 中工作,默认向右滑动可以正常工作,但不能向上或向左滑动.
Im trying to get a UISwipeGestureRecognizer to work in Swift 3, the default swipe right is working correctly though not up down or left.
我已经通过控制拖动一个动作尝试过
I have tried it by control dragging an Action
@IBAction func hole(_ recognizer: UISwipeGestureRecognizer) {
if (recognizer.direction == UISwipeGestureRecognizerDirection.left)
{
print("left")
}else if recognizer.direction == .right {
print("right")
}else {
print("other")
}
}
而且,在 ViewDidLoad
And, in ViewDidLoad
//gesture recognisers
let swipeRight = UISwipeGestureRecognizer(target: self, action: "holeSwiped:")
swipeRight.direction = UISwipeGestureRecognizerDirection.right
self.view.addGestureRecognizer(swipeRight)
let swipeLeft = UISwipeGestureRecognizer(target: self, action: "holeSwiped:")
swipeLeft.direction = UISwipeGestureRecognizerDirection.left
self.view.addGestureRecognizer(swipeLeft)
我的方法
func holeSwiped(gesture: UISwipeGestureRecognizer)
{
if let swipeGesture = gesture as? UISwipeGestureRecognizer{
switch swipeGesture.direction {
case UISwipeGestureRecognizerDirection.right:
print("right swipe")
case UISwipeGestureRecognizerDirection.left:
print("left swipe")
default:
print("other swipe")
}
}
}
现在,除了默认的权限之外,其他任何滑动都不起作用.有什么想法吗?
Now, none of the swipes are working except the default right. Any ideas?
推荐答案
步骤 1:在 viewDidLoad() 方法中添加滑动手势.
Step 1: Add swipe Gesture(s) in viewDidLoad() method.
override func viewDidLoad() {
super.viewDidLoad()
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
swipeLeft.direction = .left
self.view.addGestureRecognizer(swipeLeft)
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
swipeRight.direction = .right
self.view.addGestureRecognizer(swipeRight)
let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
swipeUp.direction = .up
self.view.addGestureRecognizer(swipeUp)
let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
swipeDown.direction = .down
self.view.addGestureRecognizer(swipeDown)
}
第 2 步:检查 handleGesture() 方法中的手势检测
Step 2: Check the gesture detection in handleGesture() method
func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
if gesture.direction == .right {
print("Swipe Right")
}
else if gesture.direction == .left {
print("Swipe Left")
}
else if gesture.direction == .up {
print("Swipe Up")
}
else if gesture.direction == .down {
print("Swipe Down")
}
}
我希望这会对某人有所帮助.
I hope this will help someone.
更新:
您需要使用@objc 为最新的 swift 版本调用您的选择器"方法.即,
You need to use @objc to call your 'Selector' method for latest swift versions. ie,
@objc func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
.
.
.
}
这篇关于Swift 3 中的滑动手势的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!