gpt4 book ai didi

swift - ScrollView 上容器内的动态 UIButton 操作不起作用

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

我在 UIViews 的自定义层次结构中的 UIButtons 操作上遇到一些问题,该 View 位于 ScrollView 的容器内根据我的需要,我会创建或不创建按钮。如果我尝试创建相同的按钮,但在 self.view 上,它工作得很好。

层次结构是这样的:

    - UIScrollView
- UIView (scroll content) //all above are dynamically created
- UIView (dynamically)
- UIButton (dynamically)
- UIView (dynamically)
- UIButton (dynamically)

我尝试用这种方式创建 View :

    class ScrollViewController: UIViewController {
@IBOutlet weak var scrollContent: UIView!

func createViews() {
let containerButton = UIView()
self.scrollContent.addSubview(containerButton)
containerButton.autoPinEdge(toSuperviewEdge: .top, withInset: 16)
containerButton.autoPinEdge(toSuperviewEdge: .left, withInset: 16)
containerButton.autoPinEdge(toSuperviewEdge: .right, withInset: 16)
containerButton.autoSetDimension(.height, toSize: 200)

let button = UIButton()
containerButton.addSubview(button)
button.autoPinEdge(toSuperviewEdge: .top, withInset: 8)
button.autoPinEdge(toSuperviewEdge: .left, withInset: 8)
button.autoPinEdge(toSuperviewEdge: .right, withInset: 8)

button.addTargetClosure { _ in
print("button tapped")
}
}
}

所有 View 都完美添加,但按钮操作不起作用。

我使用 PureLayout 进行约束..

如果我添加

    button.centerYAnchor.constraint(equalTo: containerButton.centerYAnchor).isActive = true

看起来可行,但扰乱了我的布局..

我使用这种格式在按钮上添加目标

https://medium.com/@jackywangdeveloper/swift-the-right-way-to-add-target-in-uibutton-in-using-closures-877557ed9455

我不知道在创建 View 时是否遗漏了某些内容或做错了什么。我必须做什么才能使按钮操作在 ScrollView 内容的容器内工作?

谢谢!

最佳答案

尝试创建 View ,将 View 的 userInteractionEnabled 设置为 true 和按钮。然后将按钮添加到 View 中,然后将 View 添加到scrollView的容器 View 中:

func createViews() {
//creating the container
let containerButton = UIView()
containerButton.isUserInteractionEnabled = true

//creating the button
let button = UIButton()
self.containerButton.addSubview(button)

// add view to scrollContent now.
self.scrollContent.addSubview(containerButton)
}

关于swift - ScrollView 上容器内的动态 UIButton 操作不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53873776/

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