【问题标题】:how to get Index of selected text from UITextField in swift 3? [duplicate]如何在 swift 3 中从 UITextField 获取所选文本的索引? [复制]
【发布时间】:2017-12-06 09:17:12
【问题描述】:

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

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

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

【问题讨论】:

标签: ios swift


【解决方案1】:

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

    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)
       }
   }

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2011-07-10
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多