1

我想在主视图中创建一个视图,并将滑动和拖动(平移)手势应用于该视图。但是如何知道那是轻扫还是平移手势?如何检测滑动和拖动之间的手势?

+1

最简单的方法是使用UIGestureRecognizers - 让操作系统做出区分。 – dfd

+0

@dfd ok谢谢 –

回答

3

@dfd是正确的。你应该总是使用内置的iOS手势识别器。如果应用程序要各自实现自己的逻辑来确定手势,那么iOS对用户来说就是一个非常不一致的体验。

每个手势识别器都将是UIGestureRecognizer的一个子类。您应该阅读documentation

在你的情况下,你想要UISwipeGestureRecognizerUIPanGestureRecognizer

下面是一个例子:

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     let swipeRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(userSwiped)) 
     swipeRecognizer.numberOfTouchesRequired = 1 
     swipeRecognizer.direction = .left 

     let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(userPanned)) 
     panRecognizer.minimumNumberOfTouches = 1 

     view.addGestureRecognizer(swipeRecognizer) 
     view.addGestureRecognizer(panRecognizer) 
    } 

    @objc private func userSwiped(recognizer: UISwipeGestureRecognizer) { 

    } 

    @objc private func userPanned(recognizer: UIPanGestureRecognizer) { 

    } 

} 

在这里,我创建了手势识别器,并添加他们,我想任何视图。您不必在viewDidLoad中执行此操作。通过设置目标,我们正在设置手势被识别时应该调用哪个方法。识别器会自动将自己作为参数传递给您的自定义函数,以便您可以查询state属性等。您应该阅读文档以了解每个手势识别器的过程如何不同。

+0

谢谢。好例子。 –