我有一个用手势操作视图的应用程序。视图连接到pan、捏和旋转手势。如果我开始用两个手指与视图交互,所有的手势都同时工作(预期的行为)。但是,如果你从一个手指开始,捏和旋转手势不起作用。当我试图在摇摄时开始捏或旋转时,委托中的任何方法都不会被调用。
shouldRecognizeSimultaneouslyWith永远都是真的。
预期的行为,
发布于 2021-07-06 14:46:38
在一个干净的项目中,我添加了以下内容:
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 }
}在您描述的场景之后,所有三个方法都报告了更改:
这个例子已经不适合你了吗?你正在经历的行为是什么,预期的行为是什么?
https://stackoverflow.com/questions/68269545
复制相似问题