UIScrollView zoomScale初始更新后未更新

问题描述 投票:-2回答:2

我有一个轻击手势可以运行此代码,并且只能运行一次,但是随后停止更新zoomScale

@objc func sampleTapGestureTapped(_ recognizer: UITapGestureRecognizer) {
    print("tapped")
    if self.scrollView_Image.zoomScale > self.scrollView_Image.minimumZoomScale {
        scrollView_Image.setZoomScale(1, animated: false)
    } else {
        scrollView_Image.setZoomScale(3, animated: false)
    }
}

该函数运行,并且tapped打印已注销,但zoomScale似乎没有变化。

ios swift uiscrollview
2个回答
1
投票

也许问题是您的硬编码号码。这是我的方法:

    if sv.zoomScale < sv.maximumZoomScale {
        sv.setZoomScale(sv.maximumZoomScale, animated:anim)
    }
    else {
        sv.setZoomScale(sv.minimumZoomScale, animated:anim)
    }

注意,这里没有硬编码的数字。它适用于任何滚动视图。


0
投票

我已经在一个小型View Controller中尝试过了,它工作正常。您在选择器中执行的操作有可能使手势停止工作。您可能还应该发布选择器功能代码,以及与设置Recognizer和“图像视图”相关的所有内容]

class ViewController: UIViewController {
    var tappableImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        tappableImageView = UIImageView(frame: CGRect(x: 40, y: 40, width: 100, height: 100))
        tappableImageView.backgroundColor = .red
        view.addSubview(tappableImageView)
        tappableImageView.isUserInteractionEnabled = true

        let t = UITapGestureRecognizer(target: self, action: #selector(imageViewDoubleTapped(_:)))
        t.numberOfTapsRequired = 2
        tappableImageView.addGestureRecognizer(t)
    }

    @objc func imageViewDoubleTapped(_ recognizer: UITapGestureRecognizer) {
        print("Double Tapped")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.