размеры клавиатуры iPhone - PullRequest
       8

размеры клавиатуры iPhone

0 голосов
/ 12 января 2019

Есть ли способ получить размер клавиатуры программно до того, как она будет представлена? В объективе-C

Мне нужно программно установить ограничение view.height так же, как ограничение keyboard.height. И это должно произойти до того, как будет представлена ​​клавиатура, чтобы представление не получало эту уродливую анимацию ограничений после представления ViewController.

enter image description here

1 Ответ

0 голосов
/ 13 января 2019

Я предполагаю, что вы представляете клавиатуру, вызывая becomeFirstResponder для некоторого компонента пользовательского интерфейса.

Если клавиатура появляется после представления вашего представления, вам следует проверить, где выполняется этот вызов. Вызов его в viewDidLoad или аналогично рано должен привести к тому, что клавиатура будет отображаться при анимации представления.


Ваш макет также должен корректно обрабатывать изменения клавиатуры. Размер клавиатуры может измениться даже после ее представления. Например, клавиатура Emoji / Quick Type выше, чем клавиатура по умолчанию.

Вы должны выполнить изменения ограничений в комбинации UIKeyboard[Will/Did]ShowNotification, UIKeyboard[Will/Did]HideNotification и UIKeyboardWillChangeFrameNotification. В вашем случае, UIKeyboardWillShowNotification должен добиться цели.

Словарь userInfo содержит много информации о клавиатуре. Вы найдете последний кадр клавиатуры в UIKeyboardFrameEndUserInfoKey. Если вы анимируете изменения в вашем макете, вы можете использовать значения в UIKeyboardAnimationCurveUserInfoKey и UIKeyboardAnimationDurationUserInfoKey для анимации с той же анимацией, что и на клавиатуре.

- (void)viewDidLoad {
    [super viewDidLoad];

    // Don't forget to remove the observer when appropriate.
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification
                                               object:nil];
    [self.textField becomeFirstResponder];
}

- (void)keyboardWillShow:(NSNotification *)notification {
    CGFloat keyboardHeight = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;

    [self.viewHeightConstraint setConstant:keyboardHeight];

    // You can also animate the constraint change.
}

Такая настройка также будет работать, если клавиатура представлена ​​с самого начала.

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