Как скрыть клавиатуру iPad от контроллера MODAL View? - PullRequest
22 голосов
/ 04 мая 2010

Я пытаюсь скрыть клавиатуру iPad от контроллера модального представления, но она не работает. Я попытался resignFirstResponder, но это не имеет никакого влияния, если мы находимся в контроллере модального представления. Я попытался resignFirstResponder в немодальном UINavigationController с тем же UIViewController, и клавиатура правильно скрывается.

Кто-нибудь знает, как решить эту проблему?

Спасибо.

[Обновить] похоже, что с моим кодом что-то не так, потому что resignFirstResponder работает (я сделал простой тестовый пример вместо того, чтобы использовать мой код). Но я до сих пор не знаю, в чем проблема.

Ответы [ 5 ]

34 голосов
/ 13 января 2011

Очевидно, существует новый метод -[UIViewController disablesAutomaticKeyboardDismissal], который вы можете переопределить для решения этой проблемы в iOS 4.3.

14 голосов
/ 04 мая 2010

Это было потому, что я использовал UIModalPresentationFormSheet. Все остальные работают как положено ... На это потрачено несколько часов.

5 голосов
/ 31 января 2013

Это была полная боль, чтобы найти. Похоже, один из худших дизайнов API в iOS. Большое спасибо @ 0xced и @manicaesar за ответы.

Вот мой сводный ответ для будущих разработчиков, которые застряли, бьются головой о стену.

Если это один контроллер вида, просто переопределите disablesAutomaticKeyboardDismissal и верните NO.

Если это модальный контроллер навигации, создайте свой собственный подкласс UINavigationController, например:

В .ч ...


@interface MyNavigationController : UINavigationController

@end

в .м ....

@implementation MyNavigationController


#pragma mark -
#pragma mark UIViewController
- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}

@end

В вашем коде, который показывает модальный контроллер вида.

UIViewController *someViewController = [[UIViewController alloc] init];

MyNavigationController *navController = [[MyNavigationController alloc] initWithRootViewController:someViewController];

navController.modalPresentationStyle = UIModalPresentationFormSheet;
navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navController animated:YES];

3 голосов
/ 16 декабря 2010

Я решил эту проблему, изменив размер UIModalPresentationPageSheet. Смотрите мой ответ здесь .

3 голосов
/ 11 июня 2010

Я только что подтвердил, что проблема действительно в UIModalPresentationFormSheet, и отправил отчет об ошибке в apple rdar: // 8084017

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