2015-01-14 3 views
1

Мне нужно настроить расположение нескольких элементов пользовательского интерфейса на основе высоты клавиатуры по умолчанию, которую пользователь активировал. Я знаю, как получить высоту системы по умолчанию клавиатуры в:Получите высоту пользовательской клавиатуры (iOS 8)

keyboardHeight = (sender.userInfo![UIKeyboardFrameBeginUserInfoKey] as NSValue).CGRectValue().height 

Однако, когда я использую этот код вместе с пользовательской клавиатурой (например, SwiftKey), высота возвращается как 0. Как бы я получить высоту пользовательская клавиатура? Извините, если на это уже был дан ответ, но я еще не смог найти ответный поток ... Спасибо!

+0

Вы пробовали 'UIKeyboardFrameEndUserInfoKey'? – rckoenes

+0

Yup, оба возвращаются 0. –

+0

В одном из наших приложений мы просто пошли и отключили все пользовательские клавиатуры, в основном для целей пользовательского интерфейса. –

ответ

1

Решено! Оказывается, что пользовательская клавиатура, которую я тестировал на своем телефоне (SwiftKey), имеет три вызова callbackWallShow по какой-то неизвестной причине ... Плохое кодирование на стороне SwiftKey/iOS 8? В любом случае, я написал свой код таким образом, что я использовал только первый обратный вызов, но третий обратный вызов возвращал отправителю, у которого была правильная информация. Для того, UIKeyboardFrameEndUserInfoKey на каждом из трех обратных вызовов возвращается высота:

No keyboard (0.0) 
System's keyboard (also SwiftKey's keyboard without the autocomplete frame above the main keyboard) 
Custom keyboard 

Я использовал информацию от третьего обратного вызова и смог правильно обновить свои элементы пользовательского интерфейса.

+0

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

+0

Привет, извините - к сожалению, у меня больше нет доступа к коду, так как я подписал NDA и не смог сохранить копию приложения для себя. Я думаю, что если вы посмотрите на вызовы клавиатурыWillShow, вы сможете найти то, что ищете. Попросите распечатать каждый из обратных вызовов и посмотреть, какие значения он возвращает; вы должны найти тот, который вы ищете, в одном из обратных вызовов. –

+0

В частности, печать 'keyboardHeight = (sender.userInfo! [UIKeyboardFrameBeginUserInfoKey] как NSValue) .CGRectValue(). Height', вероятно, поможет вам. –

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