2011-05-14 2 views
0

У меня есть 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 

Он работает в первый раз, когда я активировать текстовое поле, но не второй раз...?

Thankyou.

+0

Вы создаете 'text_field' в своем' MessageInputDelegate'? – akashivskyy

+0

Нет, код, который вы видите, является его кодом. –

+0

'text_field.enabled = NO' выглядит как подозреваемый. –

ответ

0

Я использовал endEditing закрыть клавиатура и работает.

0

Если вы cerating text_field от YOUT MessageInputDelegate, вы должны использовать

text_field.delegate = self; 

и объявить делегат для обоих UITextFields.


Если в годовом сопоставлении создать его из другого класса, вы должны объявить MessageInputDelegate экземпляр где-то в файле .h, например

MessageInputDelegate *mid; 

, а затем

text_field.delegate = mid; 
+0

Спасибо, но я сохранил делегата в классе, который я сделал, и он все еще терпит неудачу. –