0

textFieldIOSアプリの文字数を制限したい。スタック オーバーフローに記載されているすべての方法を試したので、この質問をします。

ここでは、1 つのラベル (セキュア コード) と 1 つのテキスト フィールド (5 文字) を使用しました。

以下のコードをviewcontroller.mファイルで指定しましたが、機能しませんでした。

   myTextField.delegate = self

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{
   NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

   return !([newString length] > 5);
}
4

2 に答える 2

7

ViewController.hに、追加<UITextFieldDelegate>する必要があります。

あなたのviewDidLoadに、myTextField.delegate = self追加する必要があります。

次に、文字数を制限するには:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range     replacementString:(NSString *)string
{
     if (textField.text.length >= 5 && range.length == 0)
        return NO;
     return YES;
}

私のために働きます。それを試してみてください。

編集:

一方、コードも完全に正常に動作するはずです。コードをもう一度確認してください。

于 2013-02-13T05:46:08.163 に答える
0

迅速に: として追加UITextFieldDelegateしますextension。それはあなたの仕事をより簡単にします。

delegateで textFieldを設定することを忘れないでくださいviewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()

    // set the delegate
    textField.delegate = self
}

extension ViewController:UITextFieldDelegate {
  func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    if textField.text?.characters.count >= 5 && range.length == 0 {
      return false
    }
    return true
  }
}

countおよび でテキストフィールドを制限する方法の詳細な例を見つけることができますwidth: github source

于 2015-11-22T16:01:17.030 に答える