2016-07-19 18 views
0

私はUITextFieldを持っていますが、最大テキスト長は20にしたいと思います。したがって、現在のビューコントローラは<UITextFieldDelegate>に同意し、テキストフィールドのデリゲートとして、そして最大の長さを設定するには、次のメソッドを使用します。私は、この関数にブレークポイントを挿入したときtextField:shouldChangeCharactersInRange:replacementString:UITextFieldに入力するときに呼び出されない

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if (textField == self.nickNameTextField) 
    { 
     if (textField.text.length > 20) 
      return NO; 
    } 

    return YES; 
} 

は、しかし、私はずっと、私はどんな言葉で入力したとき、この関数が呼び出されなかったことがわかりましたテキストの長さが20を超えるときは、より少ない。

+0

デリゲートが 'UITextField'に対して正しく設定されているかどうかを確認してください。また、名前の代わりにタグを使用することをお勧めします。 –

+0

@ManjulShresthaええ、私は 'viewDidLoad'のテキストフィールド'代理人 'を設定しました – Caesar

+0

テキストフィールドをどのようにインスタンス化しますか? –

答えて

0

を作成する場合のViewController enter image description here

にデリゲートをフックアップまあ、私は問題を理解しました。私はUITextFieldのをインスタンス化するために、この文法を使用します。

self.nickNameTextField.delegate = self; 
self.nickNameTextField = ({ 
    UITextField *textField = [UITextField new]; 
    textField.placeholder = [BBTCurrentUserManager sharedCurrentUserManager].currentUser.nickName; 
    textField.textAlignment = NSTextAlignmentLeft; 
    textField.backgroundColor = [UIColor lightGrayColor]; 
    textField; 
}); 

は、もともと私は(上記のコードのように)中括弧の外にテキストフィールドのデリゲートを設定します。しかし、私がself.nickNameTextField.delegate = self;を中括弧の中に移動すると、それは機能しました。しかし、私はなぜこれが起こったのか分からない、誰かが私に理由を教えてくれますか?

0

テキストフィールドをデリゲートにリンクしていない可能性があります デリゲートしたいtextFieldを右クリックし、viewcontrollerでtextFieldをドラッグしてデリゲートを選択します。

+0

さて、プログラムでテキストフィールドを作成しました – Caesar

0

ここでは、textFieldとデリゲートをXIBまたはストーリーボードで接続する手順とスクリーンショットを示します。

ストーリーボードステップ1で

:テキストフィールドをクリックし enter image description here

ステップ2:ステップ3 enter image description here

のViewController にテキストフィールドをドラッグ:のViewControllerにテキストフィールドの "コントロール+マウス" をクリックしてください。 hと線の表示enter image description here

ステップ4:Now Boxが表示され、TextField名が表示されますenter image description here

STEP 5:右enter image description here

のViewController にTextFieldをクリックSTEP 6:あなたがプログラムでテキストフィールド

UITextField *txtfldMaxLength = [[UITextField alloc] initWithFrame:CGRectMake(30, 100, 250, 50)]; 
txtfldMaxLength.borderStyle = UITextBorderStyleRoundedRect; 
txtfldMaxLength.textColor = [UIColor blackColor]; 
txtfldMaxLength.backgroundColor = [UIColor clearColor]; 
txtfldMaxLength.font = [UIFont systemFontOfSize:17]; 
txtfldMaxLength.placeholder = @"enter something"; 
txtfldMaxLength.autocorrectionType = UITextAutocorrectionTypeNo; 
txtfldMaxLength.keyboardType = UIKeyboardTypeDefault; 
txtfldMaxLength.returnKeyType = UIReturnKeyDone; 
txtfldMaxLength.clearButtonMode = UITextFieldViewModeWhileEditing; 
txtfldMaxLength.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
txtfldMaxLength.delegate = self; 
[self.view addSubview:txtfldMaxLength]; 
関連する問題