2016-12-26 2 views
0

ユーザーの姓と名字などのtextFieldを含む設定ビューがあります。私は、ユーザーが文字以外の何ものにも入力できないようにしたいと思っています。いくつかの研究の後、私はこれを達成するための最良の方法は、textFieldShouldReplaceCharactersInRangeデリゲートメソッドを使用することであることが判明しました。私が書いたコードは、文字で入力するだけのために働くようですが、バックスペースは許されません。私は方法のリンゴのドキュメントを読んだが、それを掴むのは苦労している。もしそれが偉大であり、許可されていないバックスペースが素晴らしいことを説明するよりnoobの友好的な方法で説明することができたので、私は本当に理解することができます。私のコードは以下の通りですtextFieldShouldReplaceCharactersInRangeを実装した後でバックスペースできません

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

    if textField == firstNameTextField { 

     let allowedCharacter = NSCharacterSet.letters 
     let replacementTextHasRightCharacters = string.rangeOfCharacter(from: allowedCharacter as CharacterSet) 

     if replacementTextHasRightCharacters == nil { 
      return false 
     } else { 
      return true 
     } 

    } 
    return true 
} 

答えて

0

この機能を使う必要はありません。

func textFieldDidChange(textField: UITextField) { 
    let letters = CharacterSet.letters 

    for letter in textField.text!.unicodeScalars { 
     if letters.contains(letter) { 
      // is a letter 
     } else { 
      // not a letter 
     } 
    } 
} 

textField.addTarget(self, action: #selector(YourViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged) 

が続いて呼び出される関数を作成:ちょうどテキストフィールドを変更するたびに実行するようにターゲットを作成

関連する問題