2016-10-13 49 views
2

ユーザーが14のテキストフィールドに入力できる文字数を制限することを検討しています。TextFieldの最大文字数制限

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

    let currentCharacterCount = userNameTextField.text?.characters.count ?? 0 
    if (range.length + range.location > currentCharacterCount){ 
     return false 
    } 
    let newLength = currentCharacterCount + string.characters.count - range.length 
    return newLength <= 14 
} 

しかし、私はこれを正しく実装しているとは思わない。私は、のviewDidLoadで

userNameTextField.delegate = self 

を設定している、と私はUITextFieldDelegateプロトコルに準拠しています。

+1

それが働いたりませんか?何の問題がありますか?投稿されたコードのロジックが正しく表示されます。 – rmaddy

+0

@rmaddy私は、ユーザーがテキストフィールドに14文字を入力するのを止めることを目指しています。私がこれを実行するとき、それはしません。 – Kevin

+1

どうしますか? –

答えて

2

あなたはスウィフト3.あなたが使用する必要がスウィフト3に変更された多くの方法の署名を使用している状態:古い署名が掲載されていない

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

をあなたの質問で。

まだ呼び出されていない場合は、テキストフィールドのdelegateプロパティを決して設定しません。

+0

優秀!まさに私が必要としていたことです。 – Kevin

0

代わりにこれを試してみてください:

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool { 
    let currentString: NSString = (textField.text ?? "") as NSString 
    let newString = currentString.replacingCharacters(in: range, with: string) 
    return newString.characters.count <= 14 
} 
+0

なぜですか? OPのコードは問題ありません。これはどのように質問に答えますか? – rmaddy

+0

@rmaddy OPのコードは正常に動作するはずですが、彼はそうではないと述べています。手動の計算やチェックを行わずにコードを投稿するのはなぜですか?エラーの発生しにくいソリューションのように感じられます。 – alexburtnik

+0

デリゲートメソッドがまだ呼び出されているかどうかはわかりません。正確な問題がまだわからないので、あなたの答えは実際には何も修正しません。 – rmaddy

0

は迅速3のためにこれを試してみてください:

let limit=4; 

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    guard let text = txtSMSCode.text else { return true } 
    let newLength = text.characters.count + string.characters.count - range.length 
    return newLength <= limit 
} 
関連する問題