在Swift中获取光标前的字符

Sur*_*gch 5 uitextfield ios swift

昨天我正在努力获取和设置光标位置UITextField.现在我试图在光标位置之前获取角色.所以在下面的例子中,我想要返回一个"e".

在此输入图像描述

func characterBeforeCursor() -> String 
Run Code Online (Sandbox Code Playgroud)

笔记

  • 我没有看到任何与此相同的其他SO问题,但也许我错过了它们.

  • 我先写了这个问题,当我找到答案时,我会同时发布问题和答案.当然,欢迎更好的答案.

  • 我说"性格"但String很好.

Sur*_*gch 13

如果光标正在显示并且位置之前的位置有效,则获取该文本.感谢这个答案的一些提示.

func characterBeforeCursor() -> String? {

    // get the cursor position
    if let cursorRange = textField.selectedTextRange {

        // get the position one character before the cursor start position
        if let newPosition = textField.position(from: cursorRange.start, offset: -1) {

            let range = textField.textRange(from: newPosition, to: cursorRange.start)
            return textField.text(in: range!)
        }
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

的结果

if let text = characterBeforeCursor() {
    print(text)
}
Run Code Online (Sandbox Code Playgroud)

根据你的例子,是"e".