键盘高度因ios8而异

时间:2014-11-17 11:35:22

标签: ios keyboard ios8

使用下面的代码来获取iPhone is设备与ios8相比的键盘高度与使用ios7的IPhone4s设备相比有所不同。因此,当我使用ios8在IPhone5s中点击它时,我的文本字段移动得非常高,而相同的代码工作正常在iphone7的iPhone 4s中很好。有人可以指导如何在两个版本中修复问题。

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

3 个答案:

答案 0 :(得分:2)

只需替换代码中的行

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

CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

让我知道它是否有效

答案 1 :(得分:1)

这不是问题,因为PredictiveEnable,您的键盘大小不同。

键盘的高度 216 已修复,但当Predictive启用时,您将获得 253 作为高度。

enter image description here

所以你必须为这两个条件编写代码。

答案 2 :(得分:0)

使用此代码,可以帮助您

- (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变量存储键盘的高度。