Клавиатура iPad не будет отклоняться, если модальный стиль представления ViewController - UIModalPresentationFormSheet - PullRequest
214 голосов
/ 30 июля 2010

Примечание:

См. Принятый ответ (не получивший наибольшее количество голосов) для решения с iOS 4.3.

Этот вопрос касаетсяповедение, обнаруженное в клавиатуре iPad, при которой он отказывается игнорироваться, если отображается в модальном диалоговом окне с контроллером навигации.

В основном, если я представляю навигационный контроллер со следующей строкой, как показано ниже:

navigationController.modalPresentationStyle = UIModalPresentationFormSheet;

Клавиатура отказывается отклоняться.Если я закомментирую эту строку, клавиатура исчезнет нормально.

...

У меня есть два текстовых поля, имя пользователя и пароль;имя пользователя имеет кнопку «Далее», а пароль - кнопку «Готово».Клавиатура не исчезнет, ​​если я представлю это в модальном навигационном контроллере.

РАБОТАЕТ

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
[self.view addSubview:b.view];

НЕ РАБОТАЕТ

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController = 
[[UINavigationController alloc]
 initWithRootViewController:b];
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[b release];

Если я удаляю часть контроллера навигации и представляю 'b' как контроллер модального вида, он работает.Проблема с навигационным контроллером?

РАБОТАЕТ

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
b.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:b animated:YES];
[b release];

РАБОТАЕТ

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController = 
    [[UINavigationController alloc]
         initWithRootViewController:b];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[b release];

Ответы [ 13 ]

0 голосов
/ 08 мая 2015

может быть не идеальным решением, но работает
[self.view endEditing: YES];
от того места, где реализована ваша кнопка или жест для представления модального

0 голосов
/ 01 августа 2010

Я уверен, что вы смотрели на это, но вы уверены, что ваш класс контроллера правильно подключен как делегат UITextField, верно?

0 голосов
/ 30 июля 2010

возможно не возвращает НЕТ, но ДА. Так что это может уйти.

А у вас есть textFieldShouldEndEditing и ДА?

И почему вы стреляете [nextResponder becomeFirstResponder]?! извините, теперь я вижу

У меня также есть несколько UITextViews которые все имеют свои "редактируемые" свойство установлено на ЛОЖЬ.

Можем ли мы предположить, что ни один из них, случайно не имеет tag значение secondField.tag+1? Если это так, вы говорите им стать первым респондентом, а не уходить в отставку первым. Возможно, добавьте NSLog () в структуру if.

...