- (void) textFieldDidBeginEditing: (UITextField *) отправитель .. эта функция не вызывается, когда я выбираю текстовое поле? - PullRequest
13 голосов
/ 26 ноября 2010

Я использую -(void)textFieldDidBeginEditing:(UITextField *)sender эту функцию в моем приложении. это не вызывается, когда я выбираю текстовое поле. вот код ...

-(void)textFieldDidBeginEditing:(UITextField *)sender{  
    if([sender isEqual:txtName])//txtName is the IBOutlet of the UITextField  
    {  
        NSLog(@"Name");  
    }  
    else{  
        NSLog(@"NO_Name");  
    }  
}

Ответы [ 4 ]

26 голосов
/ 26 ноября 2010

Вы установили делегат экземпляра UITextField для текущего контроллера представления следующим образом:

textField.delegate = self; (self означает экземпляр, где обратный вызов textFieldDidBeginEditing переопределен)

11 голосов
/ 05 марта 2013

Обязательно выполните 2 простых шага

1 - реализовать делегата UITextFieldDelegate

@interface yourViewController : UIViewController <UITextFieldDelegate>

2 - Установить делегата

yourTextField.delegate = self

Если у вас много текстовых полей в вашем представлении, вы можете установить делегат для всех ваших текстовых полей, как это

for (id subView in self.view.subviews)
    {
        if ([subView isKindOfClass:[UITextField class]]) {
            [subView setDelegate:self];
        }
    }
4 голосов
/ 26 ноября 2010

Вы должны включить UITextFieldDelegate в файл .h

@interface yourViewController : UIViewController <UITextFieldDelegate>
1 голос
/ 29 ноября 2010

Вы должны включить UITextFieldDelegate в ваш файл .h, а также добавить YourTextField.delegate = self

...