如何检测滑动和拖动之间的手势?

时间:2016-12-09 19:02:37

标签: swift uigesturerecognizer uipangesturerecognizer uiswipegesturerecognizer

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

1 个答案:

答案 0 :(得分:6)

@dfd是正确的。您应该始终使用内置的iOS手势识别器。如果每个应用程序都实现了自己的逻辑来确定手势,那么iOS对于用户来说将是一种非常不一致的体验。

每个手势识别器都将成为onMessageReceived(RemoteMessage message)的子类。您应该阅读documentation

在您的情况下,您需要UISwipeGestureRecognizerUIPanGestureRecognizer

以下是一个例子:

UIGestureRecognizer

在这里,我创建了手势识别器并将它们添加到我想要的任何视图中。您不必在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属性等。您应该阅读文档以了解每个手势识别器的此过程有何不同。