2016-11-25 9 views
0

enter image description here 私はOTPの目的のための4つのTextFieldを持っている、とも(のviewDidLoadで私のViewControllerにデリゲートを設定するときに呼び出す)メソッドUITextFieldのtextfieldShouldReturn()メソッドもバックスペースキーを押し

私はまた、デリゲートメソッドを実装している:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
      if string.characters.count > 1 { 
       return false 
      } else { 
       var tag = textField.tag 
       if string.characters.count == 0 { 
        tag -= 1 
       } else { 
        tag += 1 
       } 
       textField.text = string 
       // Try to find next responder 
       let nextResponder = textField.superview?.viewWithTag(tag) as UIResponder! 
       nextResponder?.becomeFirstResponder() 
      } 
      return false 
     } 



func textFieldShouldReturn(textField: UITextField) -> Bool { 
     print("BACKSPACE PRESSED") 
     return true 
    } 

しかし、このメソッドの両方は、フィールドが空のときに呼び出されませんが、実際にはクリアテキストが必要です。テキストフィールドが空のときに「バックスペース」を検出する方法任意のアイデアが押され、バックスペース

const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding]; 
    int isBackSpace = strcmp(_char, "\b"); 

     if (isBackSpace == -8) { 
      // Code there 
      } 
+0

あなたは 'textField'の' delegate'を接続または設定しましたか? –

+0

"BACKSPACE PRESSED"が見つかったら機能を開発したい場合はhttp://stackoverflow.com/q/1977934/5215474 – Saranjith

+0

を参照してください。 –

答えて

0

私はUITextFieldの以下のメソッドをオーバーライドすることで解決策を得ています。

class MYTextField: UITextField { 
    override func deleteBackward() { 
     super.deleteBackward() 
     delegate?.textFieldShouldReturn!(self) 
     print("_____________BACKSPACE_PRESSED_____________") 
    } 
} 
0

直接バックスペースが適切なロジックではありません確認します。あなたのテキストフィールドは、空白になってあなたの要件ごとに、あなたはファーストレスポンダになる前のテキストフィールドにしたいあなたは、私はそれはあなたを助けることを願っていますこのよう

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

    var txtAfterUpdate:NSString = textField.text! as NSString 
    txtAfterUpdate = txtAfterUpdate.replacingCharacters(in: range, with: string) as NSString 
    let updatedString = txtAfterUpdate as String 

    if updatedString.characters.count == 0 { 
     var tag = textField.tag 
     tag -= 1 
     let nextResponder = textField.superview?.viewWithTag(tag) as UIResponder! 
     nextResponder?.becomeFirstResponder() 

     return true 
    } else{ 

     // rest of your functionality 
    } 

    return true 
} 

のようなコードを記述する必要があります。

+0

@Satish Vekariyaは役に立ちますか? –

+0

このコードを書く場所はどこですか?? "shouldChangeCharactersInRange"デリゲートメソッドの – SPatel

+0

。 –

0

を検出するためのコードがあり

+0

このメソッドは、textFieldがEmptyのときは呼び出しません。 – SPatel

関連する問題