iOS文本域光标位置错误

时间:2018-04-06 04:20:02

标签: ios iphone swift uitextfield

切换iOS textField isSecureTenxtEntry。

enter image description here

我的代码就像这样

textField?.isSecureTextEntry = !textField.isSecureTextEntry

设备是iPhone 6。

2 个答案:

答案 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()
    }

希望这会对你有所帮助。