#iphone #delegates #uitextfield
#iPhone #делегаты #uitextfield
Вопрос:
Я пытаюсь выяснить, как заставить методы UITextFieldDelegate вызываться для моего UITextField. Вот некоторый код, который я использовал для создания контроллера и текстового поля:
@interface FirstViewController : UIViewController <UITextFieldDelegate> {
UITextField *fieldNumeroAppoggi;
}
@property (nonatomic,strong) UITextField *fieldNumeroArgomenti;
fieldNumeroAppoggi = [[UITextField alloc] initWithFrame:CGRectMake(210, 40, 50, 20)];
fieldNumeroAppoggi.borderStyle = UITextBorderStyleRoundedRect;
fieldNumeroAppoggi.tag = 1;
[self.dettagli addSubview:fieldNumeroAppoggi];
В моем контроллере, если я реализую метод делегирования
- (BOOL) textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
он никогда не вызывается. Однако, если я установлю fieldNumeroAppoggi.delegate = self;
, все будет работать нормально. Если я создаю другие UITextField
объекты, должен ли я устанавливать делегат для каждого из них?
Комментарии:
1. Я не уверен, что полностью понимаю ваш вопрос, но если вы спрашиваете, могут ли несколько экземпляров UITextField совместно использовать одного делегата (в данном случае self), то ответ — да.
Ответ №1:
Предполагая, что я вас понимаю … да, объект может быть делегатом для нескольких элементов управления. Если вам нужно выполнять разные действия в зависимости от того, какой элемент управления отправил сообщение, вы обрабатываете это в обработчике делегирования. Вы можете либо сравнить отправителя с конкретным объектом, либо использовать tag
свойство для идентификации конкретных экземпляров.
Пример:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
BOOL shouldReturn = YES;
if (textField == fieldNumeroAppoggi) {
// do something
}
else if (textField == aDifferentTextField) {
// do something different
// maybe this one shouldn't return
shouldReturn = NO;
}
return shouldReturn;
}
Комментарии:
1. мммм, я спрашиваю, есть ли у меня более одного текстового поля, для использования метода делегирования я должен установить fieldNumeroAppoggi.delegate = self; и aDifferentTextField. делегат = self;?? большое вам спасибо