追加

2017-06-17 95 views
1

後,用戶無法刪除文本字段中的字符我有一個​​小型代碼,可以計算文本字段中的字符以在其間添加此行「/」。這是爲了像這樣的誕生日期(04/01/1984)。現在我的問題是,當你刪除並附加到角色後,它將無法通過。實際上它卡在那裏。我可以做什麼,這樣用戶可以刪除,以防他發現了一些錯誤的數字?追加

//dob add character when in range and dismiss keyboard 
func textEdit(sender: UITextField) { 
    let mainChar : Character = "/" 

    if sender.text?.characters.count == 2 { 
     self.dobTextField.text?.append(mainChar) 
    } else if sender.text?.characters.count == 5 { 
     self.dobTextField.text?.append(mainChar) 
    } else if sender.text?.characters.count == 10 { 
     dobTextField.resignFirstResponder() 
     view.endEditing(true) 
    } 

} 

行動被觸發像這樣在我viewDidLoad中:

dobTextField.addTarget(self, action: #selector(textEdit(sender:)), for: .editingChanged) 
+0

實際上,如何在觸發刪除時對此功能進行反轉? –

回答

1
var firstIndexHit = false 
var secondIndexHit = false 

func textEdit(sender: UITextField) { 
    let mainChar : Character = "/" 


    if (sender.text?.characters.count)! < 2 { 
     self.firstIndexHit = false 
    } else if (sender.text?.characters.count)! > 2 && (sender.text?.characters.count)! < 5 { 
     self.secondIndexHit = false 
    } 

    if sender.text?.characters.count == 2 { 

     if !firstIndexHit { 
      self.dobTextField.text?.append(mainChar) 
      firstIndexHit = true 
     } 

    } else if sender.text?.characters.count == 5 { 

     if !secondIndexHit { 
      self.dobTextField.text?.append(mainChar) 
      secondIndexHit = true 
     } 
    } else if sender.text?.characters.count == 10 { 
     dobTextField.resignFirstResponder() 
     view.endEditing(true) 
    } 
} 

如果你做這種方式,那麼你將能在與「/」代替它來編輯空間任何東西。實際上,我會將3個文本字段彼此非常接近,並且當前兩個文本字段在新文本字段上有text.characters.count == 2becomeFirstResponder()時,執行resignFirstResponder。當您檢測到textField的計數爲0時,您可以resignFirstResponder並返回到其他文本字段。讓我知道這個是否奏效。

+0

非常感謝!一直在努力幾個小時。它完美的作品。正是我在找什麼。 –