UITextfield弹出文本

时间:2018-06-08 09:04:24

标签: ios swift uitextfield

我为文本字段设置了插入

class PrimaryTextField: UITextField {

    var padding = UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15)

    override open func textRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }

    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }

    override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }

}

效果很好,但是当用户在文本字段之间跳转时,文本会弹跳。

enter image description here

问题仅出现在真实设备上,模拟器正常。你有没有想法,如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

keyboardWillHide出现问题并显示通知。我在那里制约了约束。我在动画之前添加了下面的代码,文本不再弹跳。

    UIView.performWithoutAnimation({
        emailTextField.layoutIfNeeded()
        passwordTextField.layoutIfNeeded()
    })

答案 1 :(得分:0)

您可以创建IBInspectable UITextField

class PaddedTextField: UITextField {

    @IBInspectable var padding: CGFloat = 0

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        return CGRect(x: bounds.origin.x + padding, y: bounds.origin.y, width: bounds.width - padding * 2, height: bounds.height)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        return CGRect(x: bounds.origin.x + padding, y: bounds.origin.y, width: bounds.width - padding * 2, height: bounds.height)
    }
}

它也适用于iOS设备。

你可以试着告诉我。