2016-12-10 8 views
2

私はテキストフィールドの文字を最小限に抑える方法を探しています。テキストフィールドはユーザー名の入力用であるため、ユーザーに4文字以上30文字以下の文字を入力させたいと考えています。最初に、テキストフィールドshouldChangeCharactersInを作成して、テキストフィールドに最大文字を設定しました。コードはうまく見えますが、ユーザー名テキストフィールドが4文字未満の場合、ユーザーがエラーを返すか、falseを返すようにする場合に問題になります。スウィフト3のテキストフィールドの最小文字数を設定する方法

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

let currentString = usernameTextField.text!.characters.count ?? 0 
     if (range.length + range.location > currentString) { 
      return false 
     } 
     let newLength = currentString + string.characters.count - range.length 
     return newLength <= 30 
    } 

助けが必要ですか?

答えて

1

textFieldShouldEndEditing(_:)デリゲートメソッドを実装します。現在の長さが短すぎる場合は、falseを返し、オプションで何らかのメッセージ/インジケータを表示して、ユーザが何が間違っているかを知ることができます。

textField(_:shouldChangeCharactersIn:replacementString:)を更新して、新しい長さが短すぎるかどうかを確認します。その場合は、保存ボタンまたはその他の適切なUIコンポーネントを無効にして、ユーザーに修正すべきことがあることを知らせます。

1
func textFieldShouldReturn(textField: UITextField) -> Bool { 
    let fieldTextLength = textField.text!.characters.count 

    if fieldTextLength < 4 || fieldTextLength > 30 { 
     //do something about it 
    } 
    self.view.endEditing(true) 
    return true 
} 

最後に問題を理解していませんでしたが、これが必要です。

+0

問題は、すべてのユーザーがusernameTextFieldを4より小さく入力してから30文字を超えるとfalseになることです。私は最後の部分(30文字を超える)を行いましたが、4文字未満の解決策を見つけることができませんでした。 – user2508528

+0

これは適切な方法ではありません。このコードでは、テキストフィールドが短すぎたり長すぎたりしても、キーボードを閉じることができます。 – rmaddy

関連する問題