Xcode 5 和 iOS 8 键盘滚动不工作

Xcode 5 and iOS 8 keyboard scroll not working

直截了当地说,当我使用 Xcode 6 构建我的项目时,当键盘即将显示时,屏幕上的组件会正确向上滚动。

但是,当我使用 Xcode 5 构建时,所有组件都离开了屏幕(也就是它们移动得太高)。我搜索了但找不到问题。

此问题仅在 iOS 8 横向模式下出现。在 iOS 7 上一切正常。有谁知道问题出在哪里?由于某些原因,必须使用 Xcode 5 进行构建。 谢谢!

创建视图时

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShown:) name:UIKeyboardWillShowNotification object:nil];

事件处理程序

- (void)keyboardShown:(NSNotification *)notification{
    CGSize kbSize = [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    float kbHeight = UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation) ? kbSize.height : kbSize.width;
    if( [[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) kbHeight = kbSize.height;

    _origScrollIndicatorInsets = _legsTableView.scrollIndicatorInsets;
    _origContentInset = _legsTableView.contentInset;

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbHeight, 0.0);
    _legsTableView.contentInset = contentInsets;
    _legsTableView.scrollIndicatorInsets = contentInsets;

    if (_activeTextField) {
        CGRect fieldRect = [_legsTableView convertRect:_activeTextField.bounds fromView:_activeTextField];
        [_legsTableView scrollRectToVisible:fieldRect animated:YES];
    }
}

在 Xcode 6 中创建和使用的项目并不总是与 Xcode 5 兼容。有些事情发生了变化,例如 Xcode 6 的故事板和自动布局。我看不出有任何理由需要它内置于 Xcode 5,我假设您正在寻找向后兼容性。然后您可以更改该应用程序的部署目标。如果将其更改为 7 或更旧的 iOS,您将看到它如何在更旧的 iOS 上运行,但仍使用最新版本构建。

从这个 post 我找到了计算高度的答案,而且效果很好。 keyboard height varies in ios8

- (void)keyboardWillShow:(NSNotification*)note {
      NSDictionary* info = [note userInfo];
      CGSize _kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
      float kbHeight = _kbSize.width > _kbSize.height ? _kbSize.height : _kbSize.width;
}