我有一个UIImageView,附带一个完美的UITapGestureRecognizer . 这不是问题所在,但我正在添加代码片段,它会添加手势以提供更多上下文:

let tapGestureRecognizer = UITapGestureRecognizer(
                            target: self,
                            action: Selector("didTapImageView:")
                           )
imageView.addGestureRecognizer(tapGestureRecognizer)
imageView.userInteractionEnabled = true

这就是问题:ImageView位于ScrollView内部,根据设备调整其大小 . 调整大小也按预期工作,但是当它发生时,UIImageView不再识别轻击手势 . 一切都完美显示,但点击图像不会触发didTapImageView方法 . 仅当滚动视图被重新调整时 .

调整UIScrollView的大小发生在 imagePickerController(picker, didFinishPickingMediaWithInfo) 委托方法中 . 这里是:

let currentViewHeight = scrollView.frame.size.height
if currentViewHeight < heightLimit {
    let frameRect = CGRect(x: 0, y: 0, width: self.view.frame.width, height: currentViewHeight + offset)
    let frameSize = CGSize(width: scrollView.frame.size.width, height: currentViewHeight + offset)
    scrollView.frame = frameRect
    scrollView.contentSize = frameSize
}

如何防止手势识别器被取消?