ios - 初始化后在 UITextField 的子类上设置 rightview

标签 ios swift uitextfield

我尝试在 UITextField 初始化后设置 rightView,但它得到 nil。这是我的类(class):

class MyTextField: UITextField, UIGestureRecognizerDelegate {  
    public required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        prepare()
    }

    public override init(frame: CGRect) {
        super.init(frame: frame)
        prepare()
    }

    public convenience init() {
        self.init(frame: .zero)
    }

    open private(set) var errorUIImageView = UIImageView(image: (resourceName: "ic_error_red"))

    open func prepare() {
        print("prepare")
        let tap = UITapGestureRecognizer(target: self, action: Selector(("handleTap:")))
        tap.numberOfTapsRequired = 1
        tap.delegate = self
        errorUIImageView.isUserInteractionEnabled = true
        errorUIImageView.addGestureRecognizer(tap)
        self.rightView = errorUIImageView // setting the rightView here
    }

    @IBInspectable
    open var detail: String? {
        get {
            return detailLabel.text
        }
        set(value) {
            detailLabel.text = value
            if let v: String = value {
                self.rightViewMode = .always

                if self.rightView == nil {
                    print("nil") // this line is reached!
                }
            }
            else {
                self.rightViewMode = .never;
            }
        }
    }

    @IBInspectable
    open var detailColor = UIColor.red {
        didSet {
            if let v: String = detailLabel.text {
                detailLabel.attributedText = NSAttributedString(string: v, attributes: [NSForegroundColorAttributeName: detailColor])
            }
        }
    }

    @IBInspectable
    open private(set) lazy var detailLabel = UILabel(frame: .zero)

    func handleTap(sender: UITapGestureRecognizer) {

        print("tapped")
    }
}

大部分代码取自Material

最佳答案

如果您在界面构建器中首次显示实现后对其进行了编辑,则可能需要刷新所有 View 。

enter image description here

关于ios - 初始化后在 UITextField 的子类上设置 rightview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39764893/

相关文章:

ios - iBeacon监控实现ios7.1

ios - 如何在 Swift 中截取全屏屏幕截图?

iphone - 编辑 UITextField 时切换 UITextAutoCorrectionType

ios - 使用磁盘中的图像数据填充阵列时崩溃

ios - 更优雅的方式来实现 UITableView 的边距?

json - Swift - 在 Post 请求上向 httpBody 添加参数

Swift Sprite Kit 应用内购买

objective-c - UIAlertView 文本字段捕获 onchange

ios - UITableView 单元格内的 UITextField 没有响应

ios - 如何始终从 LTR 显示 UIToolBar?