我正在创建一个简单的自定义UIView。然后将视图添加到视图控制器。所有的东西都是看得见的,都在原处,看起来应该是这样。问题是没有响应点击。也就是说,文本字段不允许我输入,段控件不响应,按钮不响应。我完全忽略了什么愚蠢的错误?
用户界面:

class LoginView: UIView, UITextFieldDelegate {
    let orange = UIColor(red: 244/255.0, green: 123/255.0, blue: 32/255.0, alpha: 1)
    let green = UIColor(red: 0/255.0, green: 138/255.0, blue: 95/255.0, alpha: 1)
    let gray = UIColor(red: 128/255, green: 128/255, blue: 128/255, alpha: 1)

    let screenSize: ScreenSize = ScreenSize()

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

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupView()
    }

    private func setupView() {
        addSubview(cardView)

    }
var cardView: UIView {
        let cardView: UIView = UIView()
        cardView.frame = CGRect(x: 40, y: (screenSize.screenHeight / 2.5), width: (screenSize.screenWidth) - 80, height: 300);
        cardView.backgroundColor = UIColor.white
        cardView.layer.cornerRadius = 3.0
        cardView.layer.masksToBounds = false
        cardView.layer.shadowColor = UIColor.black.withAlphaComponent(0.2).cgColor
        cardView.layer.shadowOffset = CGSize(width: 0, height: 1)
        cardView.layer.shadowOpacity = 0.8
        cardView.addSubview(loginMethodSegmentControl)
        cardView.addSubview(emailIcon)
        cardView.addSubview(passwordIcon)
        cardView.addSubview(emailTextfield)
        cardView.addSubview(passwordTextField)
        cardView.addSubview(loginButton)
        cardView.addSubview(forgotPasswordButton)
        return cardView;
    }

var emailTextfield: UITextField {
        let emailTextfield: UITextField = UITextField()
        emailTextfield.frame = CGRect(x: 70, y: 100, width: (screenSize.screenWidth - 190), height: 30)
        emailTextfield.font = UIFont.systemFont(ofSize: 15)
        emailTextfield.autocorrectionType = UITextAutocorrectionType.no
        emailTextfield.spellCheckingType = UITextSpellCheckingType.no
        emailTextfield.placeholder = "Email Address"
        emailTextfield.isUserInteractionEnabled = true
        emailTextfield.isEnabled = true
        emailTextfield.keyboardType = .emailAddress
        emailTextfield.borderStyle = .none
        emailTextfield.layer.backgroundColor = UIColor.white.cgColor
        emailTextfield.layer.masksToBounds = false
        emailTextfield.layer.shadowColor = orange.cgColor
        emailTextfield.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
        emailTextfield.layer.shadowOpacity = 1.0
        emailTextfield.layer.shadowRadius = 0.0
        emailTextfield.delegate = self
        return emailTextfield
    }

视图控制器:
 override func viewDidLoad() {
        super.viewDidLoad()
loginView = LoginView(frame: CGRect.zero)
        self.view.addSubview(loginView)
}

最佳答案

帧为零,这是转发触摸的基础

loginView = LoginView(frame: CGRect.zero)

添加适当的框架或约束,例如
loginView = LoginView(frame: self.view.bounds)

关于ios - Swift自定义UIView完全不响应点击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53834865/

10-12 01:19
查看更多