我有一个UIScrollView
和UIImageView
这样我就可以使用pinche放大图像视图中:如何将平移手势从UIScrollView转发到UIImageView?
extension CropperViewController : UIScrollViewDelegate {
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.imageView;
}
}
我现在也希望能够自由移动UIImageView
所以我尝试添加一个UIPanGestureRecognizer to my
UIImageView`:
self.imageView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:))));
func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == .began || gestureRecognizer.state == .changed {
let translation = gestureRecognizer.translation(in: self.view);
gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y + translation.y);
gestureRecognizer.setTranslation(CGPoint.zero, in: self.view);
}
}
我现在有一个问题,就是根本没有触发pan touch事件,所以我想UIScrollView
可能会捕获所有这些事件。因此,#2一些研究告诉我,以下内容添加到我的UIScrollView
:
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)));
tapGestureRecognizer.numberOfTapsRequired = 1;
tapGestureRecognizer.cancelsTouchesInView = false;
self.scrollView.addGestureRecognizer(tapGestureRecognizer);
,但实际上是什么也没有改变。缩放后,我可以缩放和移动图像,但我无法使用UIPanGestureRecognizer
移动图像。我想使用UIScrollView
来缩放,但我想使用UIPanGestureRecognizer
移动UIImageView
。
我该怎么做?
编辑
也许可以禁用或更改UIScrollView
的移动手势识别器和转发这些事件给UIImageView
?
我不想'shouldRecogniseSimultaneouslyWith ....'。我希望ScrollView在UIImageView上处理缩放和PanGestureRecognizer来处理移动。 – Mulgard