首页 > 解决方案 > UIScrollView 之外的按钮不可触摸

问题描述

我在使用 UIScrollView 时遇到了一个烦人的问题,如果我的按钮在滚动视图之外,则无法触摸它们,但我现在不知道如何修复它

我尝试了一些方法,但到目前为止没有帮助

    override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    var contentRect = CGRect.zero

    for view in scrollContentView.subviews {
        contentRect = contentRect.union(view.frame)
    }

    for view in scrollContentView.subviews {
        contentRect = contentRect.union(view.frame)
    }

    scrollView.contentSize.height = contentRect.size.height
}

上面的代码只是有助于使滚动视图可滚动

在此处输入图像描述

我还在此链接中附加了我的示例项目 https://drive.google.com/open?id=19U8jecDNQbAnTFbG36KMRxHfaLLcaLDq

我非常感谢您的建议。谢谢

标签: swiftuiscrollviewuistackview

解决方案


您没有正确描述您的视图层次结构。你实际拥有的是这样的:

Scroll view
    Content view
        Stack view
            Buttons

内容视图是导致问题的原因。它的高度被固定到视图控制器的主视图的高度——即屏幕的高度。但是当然,带有按钮的堆栈视图屏幕高,以便为您提供滚动的内容。所以堆栈视图的下部,以及堆栈视图底部的按钮,位于内容视图的底部下方。因此他们在他们的superview之外。因此他们是不可触碰的。其父视图(或其父视图,或其父视图,一直到视图层次结构)之外视图不可触及的。


推荐阅读