2015-10-09 2 views
0

Я работаю код, Pins UI высоту клавиатуры, когда он появляется:Обновление контактов на клавиатуру после авторотации на iPhone/IPad

- (void)keyboardWillShow:(NSNotification *)notification 
{ 
    NSDictionary *info = [notification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size; 
    self.bottomSpacing.constant = kbSize.height + 10; 
    [self.view layoutIfNeeded]; 
} 

- (void)keyboardWillHide:(NSNotification *)notification 
{ 
    self.bottomSpacing.constant = 10; 
    [self.view layoutIfNeeded]; 
} 

Но есть проблема, когда autorotates устройства: изменения высоты клавиатуры (бывший на IPad. 313 => 398), а «bottomSpacing» устаревает.

Как обновить его до новой высоты клавиатуры? В качестве альтернативы можно ли назначить ограничение автоопределения для представления клавиатуры?

ответ

0

Самый простой способ слушать UIKeyboardWillChangeFrameNotification уведомления:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillResize:) name:UIKeyboardWillChangeFrameNotification object:nil]; 

... 

- (void)keyboardWillResize:(NSNotification *)notification 
{ 
    NSDictionary *info = [notification userInfo]; 
    float keyboardTop = CGRectGetMinY([info[UIKeyboardFrameEndUserInfoKey] CGRectValue]); 
    float animationDuration = info[UIKeyboardAnimationDurationUserInfoKey] floatValue]; 

    [self.view layoutIfNeeded]; 
    [UIView animateWithDuration:animationDuration animations:^{ 
     self.pinToKeyboardConstraint.constant = keyboardTop; 
     [self.view layoutIfNeeded]; 
    }]; 
} 

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

Смежные вопросы