Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 5和iOS 8键盘滚动不工作_Xcode_Ios7_Scroll_Ios8_Keyboard - Fatal编程技术网

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

Xcode 5和iOS 8键盘滚动不工作,xcode,ios7,scroll,ios8,keyboard,Xcode,Ios7,Scroll,Ios8,Keyboard,说到这里,当我用Xcode 6构建我的项目时,当键盘即将显示时,屏幕上的组件会正确地向上滚动 但是,当我使用Xcode 5构建时,所有组件都会离开屏幕(也就是说,它们移动得太高)。我搜索了一下,但找不到问题 此问题仅在横向模式下的iOS 8上发生。在iOS 7上,一切正常。有人知道问题出在哪里吗?出于某些原因,必须使用Xcode 5构建。 谢谢 创建视图时 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selec

说到这里,当我用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上工作,但仍然使用最新版本构建


从这篇文章中,我找到了计算高度的答案,这非常有效。


你好谢谢你的评论。我为客户构建Xcode 5还有其他一些原因。但我想你是对的。我没有在我的项目中使用故事板。部署目标设置为iOS 6.1,这是必需的。我认为这与故事板有关,如果它们没有被使用,我不确定。我建议在Xcode 5中开发这些应用程序,并在Xcode 6中打开之前复制文件。这将确保您始终可以恢复到Xcode 5版本。通常,Xcode可以轻松处理旧版本,但必须进行修改才能处理新版本。
- (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;
}