iOS文本域光标位置错误

Pra*_*ore 1 iphone uitextfield ios swift

在切换iOS textField isSecureTenxtEntry时.

在此输入图像描述

我的代码是这样的

textField?.isSecureTextEntry = !textField.isSecureTextEntry
Run Code Online (Sandbox Code Playgroud)

设备是iPhone 6.

Ind*_*eet 6

首先讨论为什么会这样.

点字符宽度与普通字符不同,因此当您更改isSecureTextEntry属性值时,UITextField不会刷新这就是为什么会出现额外空格.

要解决此问题,您可以使用下面的代码

txtPassword.isSecureTextEntry = !txtPassword.isSecureTextEntry
let str = txtPassword.text
txtPassword.text = ""
txtPassword.text = str
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中做了什么,在更改isSecureTextEntry临时变量中的存储值的值并清空UITextField之后,UITextField使用临时变量重新分配它.


Ank*_*wal 5

这个问题是由于secure dot character和 simple 字符的字符大小不同而引起的。点字符的尺寸更宽,这就是为什么当您禁用安全文本输入时,字符会收缩但光标保持在同一位置。

虽然这个问题不应该出现在最新的 Xcode 中,但我在 Xcode 6.3 中遇到了同样的问题。

解释:

当您单击按钮切换secureTextEntrybecomeFirstResponder再次为您的 textField 设置 时,它将调用键盘观察器并将光标重置到正确位置。

    textField?.isSecureTextEntry = !textField.isSecureTextEntry

    if textField?.isFirstResponder {
        textField?.becomeFirstResponder()
    }
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你。