translatesAutoresizingMaskIntoConstraints 阻止 UIButton 动作迅速
Posted
技术标签:
【中文标题】translatesAutoresizingMaskIntoConstraints 阻止 UIButton 动作迅速【英文标题】:translatesAutoresizingMaskIntoConstraints prevents UIButton actions swift 【发布时间】:2017-02-24 17:37:32 【问题描述】:我以编程方式在Swift
中添加UIButton
。
private let startBtn: UIButton =
let btn = UIButton(type: .system)
btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitle("Get Started!", for: .normal)
btn.backgroundColor = UIColor(red: 0, green: 1, blue: 1, alpha: 1.0)
btn.addTarget(self, action: #selector(ratingButtonTapped), for: .touchUpInside)
btn.setTitleColor(.white, for: .normal)
btn.layer.cornerRadius = 6
btn.layer.zPosition = 3
return btn
()
一切都很好,除了当我点击UIButton
时,ratingButtonTapped()
没有被调用。
func ratingButtonTapped(_ button: UIButton)
print("Button pressed")
当我将translatesAutoresizingMaskIntoConstraints
更改为true
时,ratingButtonTapped()
被调用。
view.translatesAutoresizingMaskIntoConstraints = true
但是UIButton
没有出现在屏幕上。我认为这与 AutoLayout (我不熟悉以编程方式添加元素)有关。我想继续使用 AutoLayout,因为我想避免使用视觉格式和框架。有什么办法可以做到吗?
感谢您的宝贵时间。
【问题讨论】:
在哪里添加按钮作为子视图? 我在“选择”屏幕上用代码创建了两个按钮。另外,我正在考虑自动布局,因此关闭了掩码标志。它可以在所有设备和 ios 9+ 上完美运行。您的代码还有其他问题。 你的按钮农场在哪里? 我像这样在 viewDidLoad 中添加了我的按钮,view.addSubview(startBtn) 另外,zPosition 高于屏幕上的所有其他元素 【参考方案1】:1:检查您的UIButton
是否被其上方的另一个UIView
覆盖,从而阻止触摸到达您的UIButton
。
2:检查您的 UIButton
是否不在已添加到的 superView 的“外部”。例如,如果您将它放在UIView
内,而UIButton
在UIView
rect
之外,则触摸不会到达它。
当您无意中“错误”的布局约束/框架时,可能会出现这些问题。
【讨论】:
以上是关于translatesAutoresizingMaskIntoConstraints 阻止 UIButton 动作迅速的主要内容,如果未能解决你的问题,请参考以下文章