0

ここで作成した UITextField があります。

text_field = [[UITextField alloc] initWithFrame:CGRectMake(10, 8, 260, 40)];
text_field.delegate = [[MessageInputDelegate alloc] init];

デリゲートの実装:

@implementation MessageInputDelegate

- (BOOL) textFieldShouldReturn: (UITextField *) text_field{
    [the_view5 becomeFirstResponder];
    the_view5->text_area.frame = CGRectMake(20, 320, 280, 40);
    the_view5->message_label.frame = CGRectMake(0, 0, 320, 320);
    text_field.enabled = NO;
    text_field.text = @"";
    return YES;
}

- (void) textFieldDidBeginEditing: (UITextField *) textField{
    printf("DID CALL EDIT METHOD\n");
    the_view5->text_area.frame = CGRectMake(20, 140, 280, 40);
    the_view5->message_label.frame = CGRectMake(0, 0, 320, 140);
}

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

@end

テキストフィールドを初めてアクティブにしたときは機能しますが、2回目は機能しません...?

ありがとうございました。

4

2 に答える 2

0

endEditing を使用してキーボードを閉じたところ、機能しました。

于 2011-05-14T16:41:32.497 に答える
0

youttext_fieldから取得している場合MessageInputDelegateは、使用する必要があります

text_field.delegate = self;

両方の UITextField のデリゲートを宣言します。


他のクラスから作成する場合は、ファイルのMessageInputDelegateどこかでインスタンスを宣言する必要があります。.h

MessageInputDelegate *mid;

その後

text_field.delegate = mid;
于 2011-05-14T14:43:58.073 に答える