ios8中的键盘高度不同

ios8中的键盘高度不同,ios,keyboard,ios8,Ios,Keyboard,Ios8,我使用下面的代码来获取键盘高度,与带ios7的IPhone4s设备相比,带ios8的IPhone5s设备的键盘高度有所不同。因此,当我在带ios8的IPhone5s中轻触文本字段时,文本字段移动得非常高,而相同的代码在带ios7的IPhone4s中工作正常。有人能指导如何在两个版本中解决这个问题吗 - (void)keyboardWasShown:(NSNotification*)notification { NSDictionary* info = [notification user

我使用下面的代码来获取键盘高度,与带ios7的IPhone4s设备相比,带ios8的IPhone5s设备的键盘高度有所不同。因此,当我在带ios8的IPhone5s中轻触文本字段时,文本字段移动得非常高,而相同的代码在带ios7的IPhone4s中工作正常。有人能指导如何在两个版本中解决这个问题吗

- (void)keyboardWasShown:(NSNotification*)notification
{
    NSDictionary* info = [notification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    float kbHeight;
    if (([UIApplication sharedApplication].statusBarOrientation== UIDeviceOrientationPortraitUpsideDown)||([UIApplication sharedApplication].statusBarOrientation== UIDeviceOrientationPortrait))
    {
        kbHeight=kbSize.height;
    }
    else
    {
        kbHeight=kbSize.width;
    }



    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbHeight, 0.0);

    self.scroll.contentInset = contentInsets;
    self.scroll.scrollIndicatorInsets = contentInsets;

    CGRect rect = self.view.frame;
    rect.size.height -= (kbHeight);


    if (!CGRectContainsPoint(rect, self.activeField.frame.origin))
    {
        CGPoint scrollPoint = CGPointMake(0.0, self.activeField.frame.origin.y - ((kbHeight) - self.activeField.frame.size.height));
        [self.scroll setContentOffset:scrollPoint animated:NO];
    }
}

只需替换代码中的行

CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;


让我知道它是否工作

这不是问题,您得到的键盘大小不同,因为
预测
启用

键盘的高度为216,这是固定的,但当启用
Predictive
时,您将获得253作为高度


因此,您必须为这两种情况编写代码。

使用此代码,可能会对您有所帮助

- (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;
}

kbHeight可变存储的键盘高度。

问题是什么?@Legoless我想问题是“有人能帮我吗?”:)是的,因为键盘高度在变化,我在我的应用程序中遇到了一些问题。我如何获得键盘的实际高度?如何在启用预测文本时获得键盘高度?来自同一代码,正如我在上面的回答中所说的,如果启用了predictive,则高度将为253,否则在禁用predictive后尝试运行代码,您将获得一致的高度不,我的朋友568不是高度,而是横向模式下的宽度。我也在横向模式下测试你们的代码,有预测功能的键盘高度是193,没有预测功能的键盘高度是162。
- (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;
}