swift - Swift 3 中的滑动手势

标签 swift

我试图让 UISwipeGestureRecognizer 在 Swift 3 中工作,默认的向右滑动工作正常,但不是向上或向左滑动。

我试过控制拖动一个Action

@IBAction func hole(_ recognizer: UISwipeGestureRecognizer) {
    if (recognizer.direction == UISwipeGestureRecognizerDirection.left)
    {
        print("left")
    }else if recognizer.direction == .right {
        print("right")
    }else {
        print("other")
    }
}

并且,在 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")
        }
    }
}

现在,除了默认的右滑动操作外,所有滑动操作都不起作用。有什么想法吗?

最佳答案

第 1 步:在 viewDidLoad() 方法中添加滑动手势。

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)
}

第二步:检查handleGesture()方法中的手势检测

func handleGesture(gesture: UISwipeGestureRecognizer) {
   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")
   }
}

我希望这会对某人有所帮助。

更新:

您需要使用@objc 为最新的swift 版本调用您的“选择器”方法。 即,

@objc func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
  .
  .
  .
}

关于swift - Swift 3 中的滑动手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39764088/

相关文章:

带有 UIView 的 iOS UITableView 自定义页脚

swift - 如何修复 4 个水平标签的约束?

ios - 如何在不更改 NavigationItem 标题的情况下推送新 Controller ?

ios - 将一个项目作为子模块添加到另一个项目

Xcode、Swift - 如何使用将参数作为选择器的函数

swift - 如何实现这种之字形 Collection View 布局?

ios - 无法识别的选择器发送到实例 - 仅限 Swift 4

swift - 链式网络请求 RXSwift

ios - 在ios swift中的UIControl中添加 subview

swift - 如何通过 Swift 促进信用卡和银行账户之间的付款