resignFirstResponder Не работает? - PullRequest
5 голосов
/ 28 июля 2011

Я пытаюсь скрыть клавиатуру на iPad, но не знаю, почему не работает resignFirstResponder. Но popToRoot хорошо работает.

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
    NSString *desc = [NSString stringWithFormat:@"%@",[descTF text]];
    [textField resignFirstResponder];
    [self.navigationController popToRootViewControllerAnimated:YES];


    return YES;
}

Так, не могли бы вы мне подсказать, что мне делать, пожалуйста?

Ответы [ 5 ]

19 голосов
/ 28 июля 2011

Это поле внутри UIModalPresentationFormSheet? Если это так, то это известная проблема, из-за которой вы не можете программно отключить клавиатуру до тех пор, пока не отключится контроллер представления.

ОБНОВЛЕНИЕ : в соответствии с этой цепочкой с форумов разработчиков Apple, возможный обходной путь для этого заключается в представлении элемента управления представления листа из подкласса контроллера навигации, который реализует метод disablesAutomaticKeyboardDismissal , Так что-то вроде:

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController];
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:theNavigationController animated:YES];
7 голосов
/ 18 марта 2012

Чтобы продолжить ответ samvermette, если он находится внутри UIModalPresentationFormSheet, теперь вы можете переопределить метод disablesAutomaticKeyboardDismissal, чтобы получить желаемое поведение.Добавьте следующий метод в ваш класс, и UITextFields и UITextViews ответят на resignFirstResponder.

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}
1 голос
/ 28 июля 2011

У вас никогда не должно быть повода для отправки -resignFirstResponder.Что вам нужно сделать, это просто отправить -endEditing:YES на вид.

0 голосов
/ 22 апреля 2014

(Извинения ... это четвертое место на сайте StackOverflow, где я разместил это исправление ..)

У меня были огромные проблемы с XCode 5 и iOS 7, когда я пытался скрыть экранную клавиатуру.

В конце концов я нашел очень простое решение: я просто отключил UITextFields в своей форме. Волшебным образом этого было достаточно, чтобы экранная клавиатура выдвинулась.

Подробнее здесь

Удивительно, но это работает даже на модале UIViewControllers. Да, это меня тоже удивило !!

0 голосов
/ 28 июля 2011

Реализовали ли вы UITextFieldDelegate? Если вы реализовали это, то это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...