Модальный диалог не отключает клавиатуру

Я столкнулся с проблемой, когда клавиатура не отбрасывается при выходе из UITextField или UITextView в UIModalPresentationFormSheet. Кроме того, я создал большую кнопку, чтобы служить фоном представления, поэтому, если пользователь заходит за поля, они запускаются. Я использую тот же код в регуляторе регулярных представлений, и он работает так, как ожидалось. В контроллере модального просмотра он ничего не делает. Любые предложения будут оценены.

- (BOOL)textFieldShouldReturn:(id)sender {  
 [titleTextField resignFirstResponder];
 return YES;
}

- (BOOL)textViewShouldReturn:(id)sender {  
 [synopsisTextView resignFirstResponder];
 return YES;
}

- (IBAction)textFieldDoneEditing:(id)sender {  
 [sender resignFirstResponder];
} 

- (IBAction)textViewDoneEditing:(id)sender {  
 [sender resignFirstResponder];
} 

- (IBAction)backgroundClick:(id)sender {  
 [titleTextField resignFirstResponder];
 [synopsisTextView resignFirstResponder];
}

Ответ 1

Переопределение disablesAutomaticKeyboardDismissal, чтобы вернуть NO, как показано ниже, с той же самой проблемой. Вы должны поместить этот код в свой контроллер просмотра, из которого вы инициируете клавиатуру:

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}

Кроме того, проверьте этот fooobar.com/questions/30944/... вопрос, если вы хотите получить подробное объяснение.

Ответ 2

Для тех, у кого проблемы с UINavigationController, я думаю, что есть лучшее решение, чем категория на UIViewController. Мы должны изменить поведение UINavigationController, чтобы задать его topViewController (на мой взгляд, так должны обрабатываться все контейнеры ViewController).

@implementation UINavigationController (DelegateAutomaticDismissKeyboard)
- (BOOL)disablesAutomaticKeyboardDismissal {
    return [self.topViewController disablesAutomaticKeyboardDismissal];
}

Ответ 3

Если вы представляете модальный вид с формой презентации "Форма листа", Apple, по-видимому, не отклоняет клавиатуру, думая, что они не хотят, чтобы клавиатура входила и выходила, где пользователь будет делать много редактирование (т.е. "формы" ). Исправление было бы изменить стиль презентации или жить с ним.

Ответ 4

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

Ответ 5

disablesAutomaticKeyboardDismissal отказался работать для меня на iOS 7.

Но... Мне удалось решить эту проблему, просто отключив UITextFields на экране.

Мое решение описано здесь.

Это обходное решение работает даже с Modal UIViewController s.

Да... это меня тоже удивило!!

Ответ 6

Если вы реализуете протокол UITextFieldDelegate, вы можете непреднамеренно вызвать это поведение, если выполняете проверку текста. Если ваши коды проверки возвращают false из textFieldShouldEndEditing, когда текст недействителен, это поле не может отменить его состояние firstResponder, и клавиатура останется на экране в следующем представлении.

Подробнее на клавиатура UITextField не будет удалена. Нет, действительно