首次激活UITextField后,UITextFieldDelegate停止工作

时间:2011-05-14 14:36:24

标签: objective-c ios uikit uitextfield uitextfielddelegate

我有一个我在这里制作的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 个答案:

答案 0 :(得分:0)

如果您从text_field退出MessageInputDelegate,则应使用

text_field.delegate = self;

并为两个UITextFields声明委托。


如果yoy从其他类创建它,您应该在MessageInputDelegate文件中的某处声明.h实例,例如

MessageInputDelegate *mid;

然后

text_field.delegate = mid;

答案 1 :(得分:0)

我使用endEditing来关闭键盘,它可以工作。

相关问题