繁体   English   中英

Swift 3以编程方式创建的按钮不可单击

[英]Swift 3 Programmatically Created Button Not Clickable

我已经以编程方式创建了一个子视图,然后以编程方式向该子视图添加了一个按钮。 我使用了锚点约束来设置按钮在子视图中的位置,并且按钮现在恰好出现在子视图中我想要的位置。 但是,该按钮不可单击。 我发现按钮的框架是(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

您的代码几乎是正确的..我已经在我的项目中运行了您的代码,并且一切正常。

    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
    }()

    var promptView : UIView = {
        let viewPrompt = UIView()
        viewPrompt.layer.cornerRadius = 2.0
        viewPrompt.layer.masksToBounds = true
        viewPrompt.backgroundColor = UIColor(red: 41/255, green: 154/255, blue: 245/255, alpha: 1)
        return viewPrompt
    }()


        override func viewDidLoad() {
            super.viewDidLoad()
            view.addSubview(promptView)
            promptView.addSubview(confirmButton)

    promptView.translatesAutoresizingMaskIntoConstraints = false

        let centerX = NSLayoutConstraint(item: promptView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerX, multiplier: 1.0, constant: 0.0)
        view.addConstraint(centerX)

        let centerY = NSLayoutConstraint(item: promptView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerY, multiplier: 1.0, constant: 0.0)
        view.addConstraint(centerY)

        let height = NSLayoutConstraint(item: promptView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 200)
        promptView.addConstraint(height)

        let width = NSLayoutConstraint(item: promptView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 200)
        promptView.addConstraint(width)

            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.heightAnchor.constraint(equalToConstant: 50).isActive = true  
    }

    func continuePressed(_ sender : UIButton ){
        print("Hello")
    }

希望它为您工作!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM