2017-08-17 75 views
1

我有6個uitextfield.And我做了自動對焦。一旦用戶在一個文本字段中輸入一個值,他們將自動重定向到下一個文本字段。但我不知道如何處理backspace。就像當用戶在上一次textfield並按退格刪除value ..again時,他們必須移動到5,4,3,2,1各自的textfields.How怎麼做?如何處理uitextfield中的退格鍵

這裏我自動對焦代碼:

@IBAction func editing(_ sender: UITextField) 
    { 


     if sender == TextFieldOne { 
      if sender.text?.characters.count == 1 { 
       TextFieldTwo.becomeFirstResponder() 
      } 
     } 

     else if sender == TextFieldTwo { 
      if sender.text?.characters.count == 1 { 
       TextFieldThree.becomeFirstResponder() 
      } 
     } 

     else if sender == TextFieldThree { 
      if sender.text?.characters.count == 1 { 
       TextFieldFour.becomeFirstResponder() 
      } 
     } 
     else if sender == TextFieldFour { 
      if sender.text?.characters.count == 1 { 
       TextFieldFive.becomeFirstResponder() 
      } 
     } 
     else if sender == TextFieldFive { 
      if sender.text?.characters.count == 1 { 
       TextFieldSix.becomeFirstResponder() 
      } 
     } 

     else if sender == TextFieldSix { 
      if sender.text?.characters.count == 1 { 
       TextFieldSix.resignFirstResponder() 
      } 
     } 




    } 

提前感謝!

+1

如果sender.text?.characters.count == 0 - 那是一個退格 –

+0

這個鏈接幫助你https://stackoverflow.com/questions/42642357/want-to-know-ever-time-while-按下鍵盤後退按鈕在textfield-e –

+0

你解決了你的問題嗎? – Jaydeep

回答

0

夫特3.0

記住editing(_:)動作是使用EditingChanged事件綁定。

if sender.text!.length == 0 { 
     // textfield where you want to Focus. 
     yourTextField.becomeFirstResponder() 
} 

但我會建議你使用下面的方法UITextFieldDelegate

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 

    } 
0

這應該工作:

// Array corresponding to the focus order of your textFields 
let textFields = [TextFieldOne, TextFieldTwo, TextFieldThree, TextFieldFour, TextFieldFive, TextFieldSix] 

func editing(_ sender: UITextField) { 
    // Get sender index in textFields array 
    guard let senderIndex = textFields.index(of: sender) else { return } 

    // Char typed 
    if sender.text?.characters.count == 1 { 
     let nextTextFieldIndex = textFields.index(after: senderIndex) 

     // Last textField: Remove focus 
     if nextTextFieldIndex == textFields.count { 
      textFields[senderIndex].resignFirstResponder() 
     } else { // Other case: Focus next 
      textFields[nextTextFieldIndex].becomeFirstResponder() 
     } 

    } else { // Char removed 
     let previousTextFieldIndex = textFields.index(before: senderIndex) 

     // If not first textField: Focus previous 
     if previousTextFieldIndex != -1 { 
      textFields[previousTextFieldIndex].becomeFirstResponder() 
     } 
    } 
} 
0

首先你不應該去前面的TF上退格自來水,因爲它不是標準的IOS。但是,您可以通過以下方式實現它:

在shouldchangecharacters方法中,您需要確定點擊的按鈕是否爲退格,然後使用標記單獨標識每個文本字段。所以當你得到退格時,你可以通過減少當前文本字段的標籤值並使之前的文本字段成爲第一響應者來獲得以前的文本字段。

對於所有文本字段都是相同的,所以您不必使用昂貴的if-else條件來實現它。