如何解决如果视图注册平移手势,则捏合手势不起作用
我有一个通过手势操作视图的应用。视图与平移、捏合和旋转手势有关。如果我开始用两个手指与视图交互,则所有手势都同时工作(预期行为)。但是,如果您从一个手指平移开始,则捏合和旋转手势不起作用。当我尝试在平移时开始捏合或旋转时,不会调用委托中的任何方法。
shouldRecognizeSimultaneouslyWith
总是正确的。
预期行为,
解决方法
从一个干净的项目中,我添加了以下内容:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.addGestureRecognizer({
let gesture = UIPanGestureRecognizer(target: self,action: #selector(onPan))
gesture.delegate = self
return gesture
}())
view.addGestureRecognizer({
let gesture = UIPinchGestureRecognizer(target: self,action: #selector(onPinch))
gesture.delegate = self
return gesture
}())
view.addGestureRecognizer({
let gesture = UIRotationGestureRecognizer(target: self,action: #selector(onRotate))
gesture.delegate = self
return gesture
}())
}
@objc private func onPan(_ sender: UIPanGestureRecognizer) {
print("Did pan to \(sender.translation(in: sender.view))")
}
@objc private func onPinch(_ sender: UIPinchGestureRecognizer) {
print("Did pinch to \(sender.scale)")
}
@objc private func onRotate(_ sender: UIRotationGestureRecognizer) {
print("Did rotate to: \(sender.rotation)")
}
}
extension ViewController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { true }
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { true }
}
在您描述的场景之后,所有 3 种方法都会报告更改:
- 我从单触拖动手势开始
- 我按下了另一个手指并开始旋转手势和捏合手势
这个例子对你不起作用吗?您正在经历什么行为以及预期行为是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。