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 内,而UIButtonUIView rect 之外,则触摸不会到达它。

当您无意中“错误”的布局约束/框架时,可能会出现这些问题。

【讨论】:

以上是关于translatesAutoresizingMaskIntoConstraints 阻止 UIButton 动作迅速的主要内容,如果未能解决你的问题,请参考以下文章