首页 > 解决方案 > 在 UIButton 上添加的图像视图和标签阻止我点击 - Swift - 以编程方式

问题描述

我在自定义 UIButton 上添加了 ImageView 和 Label,问题是它们阻止我点击按钮:

class CustomSignInButton : UIButton{


override init(frame: CGRect) {
    super.init(frame: frame)
    
   
    styleButton()
    
}


required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}



fileprivate func styleButton(){
    let imageView = UIImageView(image: #imageLiteral(resourceName: "mail").withRenderingMode(.alwaysOriginal))
    imageView.contentMode = .scaleAspectFit
    
    imageView.widthAnchor.constraint(equalToConstant: 30).isActive = true
    
    let signInLabel = UILabel(text: "Sign In with Email", font: UIFont(name: "avenir-black", size: 13), textColor: .white, textAlignment: .left, numberOfLines: 1)
    
    
    let stackView = UIStackView(arrangedSubviews: [imageView, signInLabel])
    stackView.distribution = .fill
   
    
    stackView.centerYToSuperview()
    stackView.centerXToSuperview()
    stackView.spacing = 20
    self.addSubview(stackView)
    stackView.anchor(top: topAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor, padding: .init(top: 8, left: 12, bottom: 8, right: 20))
    
    
    
}
}

我实际上需要以这种方式设置它们,但我显然想知道如何在这两个对象上实现点击能力。

标签: iosswifttextviewuibuttonuiimageview

解决方案


在“stackView”和“stackView”imageview上禁用用户交互label

fileprivate func styleButton(){
        let imageView = UIImageView(image: #imageLiteral(resourceName: "mail").withRenderingMode(.alwaysOriginal))
        imageView.contentMode = .scaleAspectFit
        imageView.isUserInteractionEnabled = false
        imageView.widthAnchor.constraint(equalToConstant: 30).isActive = true
        
        let signInLabel = UILabel(text: "Sign In with Email", font: UIFont(name: "avenir-black", size: 13), textColor: .white, textAlignment: .left, numberOfLines: 1)
        signInLabel.isUserInteractionEnabled = false
        
        let stackView = UIStackView(arrangedSubviews: [imageView, signInLabel])
        stackView.distribution = .fill
       
        
        stackView.centerYToSuperview()
        stackView.centerXToSuperview()
        stackView.spacing = 20
        self.addSubview(stackView)
        stackView.anchor(top: topAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor, padding: .init(top: 8, left: 12, bottom: 8, right: 20))
        
        
        
    }

推荐阅读