2017-07-03 61 views
2

我在登錄頁面有一個UITextField用於輸入密碼。 當用戶選擇密碼中的一部分文本時,我想獲取所選文本的索引。如何在swift 3中從UITextField獲取選定文本的索引?

例如,如果用戶在文本框中輸入'1234'並選擇了'23',我想索引爲'23'。

我不想要整數索引。所選索引的輸出類型應爲「String.Index」。

+2

我希望這個鏈接是你的答案有用:https://開頭stackoverflow.com/questions/34922331/getting-and-setting-cursor-position-of-uitextfield-and-uitextview-in-swift – Jay

+0

你可以使用Range – Dhiru

回答

0

你希望得到啓動和選定文本的結束索引功能:

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) 
     } 
    } 
相關問題