首页 > 解决方案 > UIControl 中的 UITextField

问题描述

我是 IOS 新手,我想弄清楚如何在 uicontrol 子类中检测文本字段的触摸?当我触摸 textField 时,什么也没有发生。

class PasswordField: UIControl {

    // Public API - these properties are used to fetch the final password and strength values

    private var textField: UITextField = UITextField()

    func setup() {

        isUserInteractionEnabled = true


        // Setup TextField
        addSubview(textField)
        textField.delegate = self
        textField.translatesAutoresizingMaskIntoConstraints = false
        textField.backgroundColor = .brown

        textField.placeholder = "Password"
        textField.layer.borderWidth = 2.0
        textField.layer.borderColor = textFieldBorderColor.cgColor
        textField.layer.cornerRadius = 5
        textField.isUserInteractionEnabled = true
    }

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

    override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
        super.beginTracking(touch, with: event)
        sendActions(for: [.editingDidBegin, .editingChanged])
        return true
    }
}

标签: swift

解决方案


我要求您在发布基本内容之前阅读 Apple 文档: https ://developer.apple.com/documentation/uikit/uitextfielddelegate/1619590-textfielddidbeginediting?language=objc

告诉代理编辑在指定的文本字段中开始。

- (void)textFieldDidBeginEditing:(UITextField *)textField;

此方法通知委托指定的文本字段刚刚成为第一响应者。使用此方法更新状态信息或执行其他任务。例如,您可以使用此方法显示仅在编辑时可见的叠加视图。

委托执行此方法是可选的。


推荐阅读