如何检测滑动和拖动之间的手势?
How to detect gesture between swipe and drag?
我想在主视图中创建一个视图并将滑动和拖动(平移)手势应用于该视图。但是如何知道那是滑动还是平移手势?
@dfd 是正确的。为此,您应该始终使用内置的 iOS 手势识别器。如果每个应用程序都实现自己的逻辑来确定手势,iOS 对用户来说将是一种非常不一致的体验。
每个手势识别器都将成为 UIGestureRecognizer
的子类。你应该阅读 documentation.
在你的情况下你想要 UISwipeGestureRecognizer
and UIPanGestureRecognizer
.
这是一个例子:
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
属性 等。您应该阅读文档以了解每个手势识别器的此过程有何不同。
我想在主视图中创建一个视图并将滑动和拖动(平移)手势应用于该视图。但是如何知道那是滑动还是平移手势?
@dfd 是正确的。为此,您应该始终使用内置的 iOS 手势识别器。如果每个应用程序都实现自己的逻辑来确定手势,iOS 对用户来说将是一种非常不一致的体验。
每个手势识别器都将成为 UIGestureRecognizer
的子类。你应该阅读 documentation.
在你的情况下你想要 UISwipeGestureRecognizer
and UIPanGestureRecognizer
.
这是一个例子:
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
属性 等。您应该阅读文档以了解每个手势识别器的此过程有何不同。