2017-12-21 10 views
2

私はピンコードに対してそれぞれ1桁の4つのテキストフィールドを受け取ります。数字を入力するたびに、自動的に2桁目の別のテキストフィールドに移動し、4桁目の最後のテキストフィールドに到達します。これは正常に動作します。ただし、番号パッドの削除(x)ボタンをクリックして番号を変更すると、4番目のテキストフィールドにない限り数字は削除されません。その後、3番目の2番目のテキストフィールド削除(x)ボタンが押されている限りです。ここキーボードのxボタンが押されている限り、もう一方のテキストフィールドから値を削除するには

はコード

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

    // On inputing value to textfield 

    if ((textField.text?.count)! < 1 && string.count > 0){ 
     if(textField == pinOne){ 
      pinTwo.becomeFirstResponder() 
     } 
     if(textField == pinTwo){ 
      pinThree.becomeFirstResponder() 
     } 
     if(textField == pinThree){ 
      pinFour.becomeFirstResponder() 
     } 
     textField.text = string 
     if let actualText = textField.text { 
      let pinEntered: Character = Character(actualText) 
      concatString += String(pinEntered) 

      if concatString.count == 4 { 
       checkPin() 
      } 
     } 

     return false 

    } else if ((textField.text?.count)! >= 1 && string.count == 0){ 


     // On Deleting value from Textfield 

     if(textField == pinTwo){ 
      pinOne.becomeFirstResponder() 
     } 
     if(textField == pinThree){ 
      pinTwo.becomeFirstResponder() 
     } 
     if(textField == pinFour) { 
      pinThree.becomeFirstResponder() 
     } 
     textField.text = "" 
     return false 

    } 

} 

は助けてくださいます。ありがとうございました!

+0

iは同じfunctionaliyを実装するためにhttps://github.com/varunpm1/VPMOTPViewライブラリを使用していました。それはあなたがそれを使いたい場合に備えて、様々なオプションを持っています。 @WasimMalek、ありがとう。 –

+1

私はこれを試してみる。 – TSM

+0

最初の3つのピンフィールドに入っているとき、この方法をステップオーバーするとどうなりますか?そして、私はあなたの 'becomeFirstResponder'テキストをクリアした後に移動しようと思います。 – zcui93

答えて

0

書き込み閉じるボタンのこの行為: - @IBActionのFUNCのCloseAction(_差出人:任意){

if !(self.pinFour.text?.isEmpty)! || self.tagValue == 4 { 

     self.pinFour.text = "" 
     self.pinThree.becomeFirstResponder() 

    }else if !(self.pinThree.text?.isEmpty)! || self.tagValue == 3{ 


     self.pinThree.text = "" 
     self.pinTwo.becomeFirstResponder() 
    }else if !(self.pinTwo.text?.isEmpty)! || self.tagValue == 2{ 


     self.pinTwo.text = "" 
     self.pinOne.becomeFirstResponder() 
    }else if !(self.pinOne.text?.isEmpty)! || self.tagValue == 1{ 


     self.pinOne.text = "" 

    } 
    self.tagValue -= 1 
} 
関連する問題