До IOS 8 местоположение и ширина/высота клавиатуры всегда были относительно ориентации на порт, когда сообщается в приложение. (например, ширина клавиатуры для ландшафтов находится в направлении y, ~ 352 пикселя на iPad.) Начиная с iOS 8, это было обновлено, чтобы всегда иметь (0,0) в левом верхнем углу вашего (физического) вида и ширины/height отражают ориентацию x/y, которую вы обычно ожидаете за пределами iOS. Если вы ранее позиционировали свою клавиатуру через что-то вроде keyboardDidShow
[notification userInfo]
, вы получите номера, которые не совсем понятны. Вы можете использовать что-то вдоль этих линий, чтобы принять во внимание предварительные iOS8 идиосинкразии:
- (void)keyboardDidShow: (NSNotification *) notification{
NSDictionary *keyboardInfo = [notification userInfo];
CGSize keyboardSize = [[keyboardInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
float height, width;
if(UIInterfaceOrientationIsPortrait(orientation)){
width = keyboardSize.width;
height = keyboardSize.height;
} else {
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1){
width = keyboardSize.height;
height = keyboardSize.width;
} else {
width = keyboardSize.width;
height = keyboardSize.height;
}
}
// Remainder of function
}
который может быть переработан до ...
- (void)keyboardDidShow: (NSNotification *) notification{
NSDictionary *keyboardInfo = [notification userInfo];
CGSize keyboardSize = [[keyboardInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
float width = keyboardSize.width;
float height = keyboardSize.height;
if(!UIInterfaceOrientationIsPortrait(orientation) && (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1)){
width = keyboardSize.height;
height = keyboardSize.width;
}
// Remainder of function
}
Кроме того, на 8,1 обновление исправлен ряд пейзаж/вращение ошибки, связанные с указанным выше изменением. Возьмите обновление и посмотрите, решит ли это вашу проблему.
Я думаю, что это может быть ошибка iPhone 6. – MobileDev98