public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}
@discardableResult fileprivate func otpTextField() -> BJOTPTextField {
let textField = BJOTPTextField()
textField.text = "1"
textField.delegate = self
textField.textColor = .black
textField.textAlignment = .center
textField.isSecureTextEntry = true
textField.keyboardType = .numberPad
return textField
}
我的视图控制器中有一个UITextField
子类,该子类在初始化时具有文本(“ 1”)。我将大文本复制粘贴到文本字段上。在shouldChangeCharactersIn
方法中,即使我显式返回false
,文本字段中的当前文本(“ 1”)也将被删除并变为空,为什么?
[shouldChangeCharactersIn
文档
如果应替换指定的文本范围,则返回true;否则,返回true。否则,为false保留旧文本。
为什么不保留我的旧文本?一个重要的观察结果是,在调用shouldChangeCharactersIn
之前发生了文本字段覆盖。非常奇怪。
PS:在shouldChangeCharactersIn
方法之外的任何地方,文本字段的文本都不会更改/分配。
问题代码公共函数textField(_ textField:UITextField,shouldChangeCharactersIn范围:NSRange,replaceString string:String)-> Bool {return false} TextField Creation @ ...
我知道为什么会这样。原因是由于文本字段是SecureTextEntry