Я попробовал ответ @ TaketoSano, но, похоже, не работает .. В моем случае у меня нет прокрутки, только вид с несколькими текстовыми полями.
И, наконец, я нашел обходной путь,Мне нужны два названия уведомлений по умолчанию для клавиатуры:
UIKeyboardDidShowNotification
, когда клавиатура все-таки показывалась; UIKeyboardWillHideNotification
когда клавиатура будет скрыта.
Вот пример кода, который я использовал:
- (void)viewDidLoad {
[super viewDidLoad];
...
NSNotificationCenter * notificationCetner = [NSNotificationCenter defaultCenter];
[notificationCetner addObserver:self
selector:@selector(_keyboardWasShown:)
name:UIKeyboardDidShowNotification
object:nil];
[notificationCetner addObserver:self
selector:@selector(_keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
}
- (void)_keyboardWasShown:(NSNotification *)note {
[self.view setFrame:(CGRect){{272.f, 55.f}, {480.f, 315.f}}];
}
- (void)_keyboardWillHide:(NSNotification *)note {
[self.view setFrame:(CGRect){{272.f, 226.5f}, {480.f, 315.f}}];
}
Здесь (CGRect){{272.f, 226.5f}, {480.f, 315.f}}
- это рамка по умолчанию для видакогда клавиатура скрыта.И (CGRect){{272.f, 55.f}, {480.f, 315.f}}
- это кадр вида, когда клавиатура показывала.
Кстати, при смене кадра вида автоматически применяется анимация, это действительно прекрасно!