【发布时间】:2017-10-14 22:43:01
【问题描述】:
我以编程方式创建了一个子视图,然后以编程方式向所述子视图添加了一个按钮。我使用锚约束来设置按钮在子视图中的位置,按钮现在出现在子视图上我想要的位置。但是,该按钮不可点击。我发现按钮的框架是 (0.0, 0.0, 0.0, 0.0),这可能是我的问题的原因。我的问题是,当框架为 0 时,按钮如何正常显示(但不可点击)。我用来实例化和约束按钮的代码如下。谢谢你的帮助。
var confirmButton: UIButton = {
var button = UIButton()
button.layer.cornerRadius = 2.0
button.layer.masksToBounds = true
button.backgroundColor = UIColor(red: 41/255, green: 154/255, blue: 245/255, alpha: 1)
button.setTitle("Continue", for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
button.isUserInteractionEnabled = true
button.isEnabled = true
return button
}()
promptView.addSubview(confirmButton)
confirmButton.addTarget(self, action: #selector(self.continuePressed), for: .touchUpInside)
confirmButton.leadingAnchor.constraint(equalTo: promptView.leadingAnchor, constant: 15).isActive = true
confirmButton.trailingAnchor.constraint(equalTo: promptView.trailingAnchor, constant: -15).isActive = true
confirmButton.bottomAnchor.constraint(equalTo: promptView.bottomAnchor, constant: -15).isActive = true
//confirmButton.topAnchor.constraint(equalTo: promptView.topAnchor, constant: -235)
confirmButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
【问题讨论】:
-
确保将
promptview的isUserInteractionEnabled属性设置为true -
@Paulw11 有一个很好的建议。您在哪里找到按钮的 CGRect.zero 框架?很有可能它的帧尚未设置 - 尝试在控制器的
viewDidLayoutSubviews函数中查找帧值。 (可见的 UIView 没有框架是没有意义的。)我以前遇到过这样的问题 - 花了一些时间,但我意识到 UISlider 在 UIButton 之类的代码中创建、可见并作为子视图添加也没用。如果我记得的话,它与视图层次结构有关。 -
没有运气设置 promptView 的 isUserInteractionEnabled。我直接在约束下打印确认按钮的框架
-
我想我被奇怪的框架打印出来了。该按钮现在可以工作,但看起来不像被点击了。如何激活此功能?