2015-06-16 5 views
1

Есть ли способ позвонить textFieldDidEndEditing UITextField при нажатии UIButton?Вызов textFieldDidEndEditing UITextField при нажатии UIButton

Текущий процесс функция в textFieldDidEndEditing может работать, когда пользователь нажимает кнопку «Return» или «Готово» кнопку и нажмите на UIButton. Для того, чтобы понять, если функция ABC в textFieldDidEndEditing для запуска, пользователь должен нажать «Return» или кнопку «Готово» клавиатуры и затем нажмите на UIButton.

Что я хочу, я хочу запустить Функция в textFieldDidEndEditing может работать, когда пользователь нажимает UIButton.

ответ

2

В методе обработчика кнопки вызовите:

[self.view endEditing:YES]; 

Это заставит клавиатуру исчезнуть и независимо от текущего текстового поля было в центре внимания уйдет в отставку первого ответчика и метод textFieldDidEndEditing: будет вызываться для него.

Вышеприведенное предполагает, что обработчик кнопки находится в классе контроллера вида.

Поскольку вы имеете дело с пользовательской ячейкой и кнопка находится в пользовательской ячейке, просто сделать:

[self endEditing:YES]; 

где self является пользовательским элементом. Это приведет к отмене любого текстового поля в ячейке.

+0

большой, но я в пользовательских TableViewCell таким образом, как позвонить [self.view endEditing: ДА]; – ppshein

+0

Метод обработчика кнопок находится в пользовательском классе ячейки? Если у вашего пользовательского класса ячейки есть ссылка (ivar) в текстовое поле, тогда просто вызовите 'resignFirstResponder' в текстовое поле. Мое первоначальное предложение предполагало, что обработчик кнопки находился в контроллере вида, и было много текстовых полей. – rmaddy

+0

Простой вопрос: как я могу называть «textFieldDidEndEditing» одиночного (специфического) UITextField, когда я нажимаю UIButton. [self.view endEditing: YES] и resignFirstResponser не работают, потому что я добавил UITextField программно один за другим, добавив UIBUtton. – ppshein

0

Вы можете использовать TextField UIKeyboardWillHideNotification Уведомление

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
     // register for keyboard dismiss notification 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 
} 
- (void)keyboardWillHide:(NSNotification *)notification 
{ 
    // This function will be called whenever the keyboard hides. So you can implement your textFieldDidEndEditing code here. 
} 

Кроме того, когда ваша кнопка нажата только уволиться текстовое поле с помощью

[yourTextField resignFirstResponder]; 
+1

Зачем слушать уведомление о клавиатуре? OP хочет, чтобы функция textFieldDidEndEditing: 'вызывалась при нажатии кнопки. Простое отключение текстового поля - это все, что нужно для этого. – rmaddy

+0

Да, вы правы. Простое удаление текстового поля вызовет делегата –

Смежные вопросы