切换iOS textField isSecureTenxtEntry。
我的代码就像这样
textField?.isSecureTextEntry = !textField.isSecureTextEntry
设备是iPhone 6。
答案 0 :(得分:5)
首先讨论为什么会这样。
点字符宽度与普通字符不同,因此当您更改isSecureTextEntry
属性的值时,UITextField
不会刷新,这就是出现额外空格的原因。
要解决此问题,您可以使用以下代码
txtPassword.isSecureTextEntry = !txtPassword.isSecureTextEntry
let str = txtPassword.text
txtPassword.text = ""
txtPassword.text = str
在上面的代码中,在更改临时变量中isSecureTextEntry
存储值的值并清空UITextField
之后,在使用临时变量重新分配相同的UITextField
之后,我在上面的代码中执行了什么。
答案 1 :(得分:3)
由于
secure dot character
和简单字符的字符大小不同,引发了此问题。点字符的大小更宽,这就是为什么当你禁用安全文本输入时,字符合约但光标停留在同一位置。
虽然这个问题不应该在最新的Xcode中,但我在Xcode 6.3中遇到了同样的问题。
<强>解释强>
当您单击按钮切换secureTextEntry
时,再次为textField设置becomeFirstResponder
,它将调用键盘观察者并将光标重置为右侧位置。
textField?.isSecureTextEntry = !textField.isSecureTextEntry
if textField?.isFirstResponder {
textField?.becomeFirstResponder()
}
希望这会对你有所帮助。