如何在 swift 3 中从 UITextField 获取所选文本的索引?



>我在登录页面中有一个UITextField作为密码。 当用户在密码中选择一部分文本时,我想获取所选文本的索引。

例如,如果用户在文本字段中输入"1234"并选择了"23",则我希望索引为"23"。

我不想要整数索引。 所选索引的输出类型应为"String.Index"。

要获取所选文本的开始和结束索引的函数:

extension UITextField {
func selectedTextIndexes() -> (startIndex:String.Index,endIndex:String.Index)? {
if let range = self.selectedTextRange {
if !range.isEmpty {
let location = self.offset(from: self.beginningOfDocument, to: range.start)
let length = self.offset(from: range.start, to: range.end)
let startIndex = self.text!.index(self.text!.startIndex, offsetBy: location)
let endIndex = self.text!.index(startIndex, offsetBy: length)
return (startIndex,endIndex)
}
}
return nil
}
}

如何使用它:

if let selectedTextIndexes = textField.selectedTextIndexes() {
let startIndex = selectedTextIndexes.startIndex
let endIndex = selectedTextIndexes.endIndex
if let selectedText = textField.text?.substring(with: startIndex..<endIndex) {
print(selectedText)
}
}