如何在 UIScrollView 的子视图中使用 TouchEvent

How To Use TouchEvent's in Subview Of UIScrollView

我正在尝试捕捉 UIScrollView 中的触摸事件。示例:我在 UIScrollView 中有 UIImageView。我正在使用 UIScrollViewDelegate 来检测 UIScrollView 缩放操作。但是当我尝试将 UIImageView 触摸事件作为 touchesBegan、touchesMoved 和 touchesEnded 获取时,我无法获取它们。我怎样才能得到它们?

  1. 而不是 UIImageView 使用 UIControl,其中图像可以指定为

controlView.layer.contents = image.cgImage

  1. UIImageView 放在 UIControl 内,对于 UIImageView,将 isUnteractionEnabled 设置为 false

在这两种方式中,您都可以使用 addTarget 来处理 UIControl 点击。还有像beginTrackingcontinueTracking这样的触摸事件。查看更多 https://developer.apple.com/documentation/uikit/uicontrol

  1. 使用 UITapGestureRecongizer:
imageView.addGestureRecognizer(UITapGestureRecognizer(
           target: self, action: #selector(onImageViewTap(_:))))

@objc func onImageViewTap(_ gr: UIGestureRecognizer) {
    .....
}