gpt4 book ai didi

swift - UIScrollView 放大时用 1 根手指平移

转载 作者:行者123 更新时间:2023-11-30 11:50:04 25 4
gpt4 key购买 nike

我得到了一个scrollView,其中添加了一些 subview 。滚动和缩放效果很好。

我想要的是当 ScrollView 放大时,将 1 根手指触摸的行为更改为平移而不是滚动。

现在,如果您放大并用一根手指移动,则只能滚动放大的内容。用两根手指即可平移。这是我想要改变的行为。

我还没有找到这个问题的任何解决方案,除了尝试改变所需的最小和最大接触次数之外,我真的没有任何想法,但它似乎不起作用。

func scrollViewDidZoom(_ scrollView: UIScrollView) {
scrollView.panGestureRecognizer.maximumNumberOfTouches = 1
}

func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
if scale == 1 {
scrollView.panGestureRecognizer.maximumNumberOfTouches = 2
}
}

最佳答案

我意识到我遇到的问题是每个 subview 都有自己的scrollView(在我的例子中是我的 subview wkWebViews)。尽管我试图从 UIScrollView 进行缩放,但他们仍在处理自己的缩放。

我采取了这些步骤来解决这个问题。

MyClass: UIViewController, UIScrollViewDelegate {

// This view should handle the zooming
@IBOutlet var scrollView: UIScrollView!

// .. and this view will contain all subviews to be zoomed
@IBOutlet var wrapper: UIView!

override func viewDidLoad() {
super.viewDidLoad()

self.scrollView.delegate = self
self.addSViewsToScrollView()
}

func addViewsToScrollView () {

// MARK: - Step 1
// .. set wkWebView scrollview maximum and minimum zoom scale to 1.

let myArray: [WkWebView]? = [WkWebView(),WkWebView(),WkWebView()]

for view in myArray {
wkWebView.scrollView.maximumZoomScale = 1
wkWebView.scrollView.minimumZoomScale = 1
wkWebView.isUserInteractionEnabled = false // This is key otherwise it wont work
wkWebView.scrollView.isUserInteractionEnabled = false // .. this aswell
}

// MARK: - Step 2
// .. add all views to a wrapper view

for view in myArray {
self.wrapperView.addSubview(view)
}

}

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.wrapper
}
}

通过返回单个 View ,放大状态下的平移工作正常。此外,wkWebView ScrollView 不再干扰缩放。

关于swift - UIScrollView 放大时用 1 根手指平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48426653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com