在.WhileEditing期间消除清除按钮

时间:2016-04-02 20:25:21

标签: ios swift

我继承UITextField并添加一个我要显示的绿色按钮 当我编辑或触摸文本字段时,如下所示:

class TextField: UITextField {

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

        self.textAlignment = .Center
        self.textColor = .whiteColor()
        self.translatesAutoresizingMaskIntoConstraints = false
        self.clipsToBounds = true
        self.layer.cornerRadius = CGFloat(7.0)
        self.layer.borderColor = UIColor.whiteColor().CGColor
        self.layer.borderWidth = CGFloat(1.0)
        self.borderStyle = .RoundedRect

        var frame = clearButtonRectForBounds(bounds)
        frame.origin = CGPoint(x: 0.0, y: 0.0)
        let button = UIButton(type: .System)
        button.backgroundColor = .greenColor()
        button.translatesAutoresizingMaskIntoConstraints = false
        self.rightView = button
        self.rightView?.contentMode = .Center
        self.rightViewMode = .WhileEditing
    }

}

然后,我在下面的ViewController中发起了一个实例:

class ViewController: UIViewController {

    weak var textField: TextField! {
        didSet {
            textField.delegate = self
            textField.placeholder = "I'm a text field"
            superview.addSubview(textField)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        textField = TextField()
        textField.text = "I'm some text"
    }

}

当我点击第一次的文本字段时,绿色按钮会显示。如果我 重新设置键盘(按Enter键)然后再次单击文本字段,绿色按钮不会显示 直到我删除一个角色。

问题1 每次单击文本字段时,如何显示绿色按钮?

如果我继续选择文本字段并按回车键,我最终会收到警告:

`Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.`

问题2 为什么我会收到此警告?

由于

1 个答案:

答案 0 :(得分:2)

更改:

self.translatesAutoresizingMaskIntoConstraints = false

为:

self.translatesAutoresizingMaskIntoConstraints = true

修正问题1