【问题标题】:keyboard height varies in ios8ios8中的键盘高度不同
【发布时间】:2014-11-17 11:35:22
【问题描述】:

我使用下面的代码来获取键盘高度,它在带有 ios8 的 iPhone 5s 设备中与带有 ios7 的 iPhone4s 设备中有所不同。因此,当我在带有 ios8 的 iPhone5s 中点击它时,我的文本字段移动得非常高,而相同的代码工作在带有 ios7 的 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];
    }
}

【问题讨论】:

  • 问题是什么?
  • @Legoless 我认为问题是“有人可以帮助我吗?” :)
  • 是的,因为键盘高度不同,我的应用程序面临一些问题..我怎样才能获得键盘的实际高度

标签: ios keyboard ios8


【解决方案1】:

只需替换代码中的行

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

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

让我知道它是否有效

【讨论】:

    【解决方案2】:

    这不是问题,因为PredictiveEnable,所以您得到了不同尺寸的键盘。

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

    所以你必须为这两种情况编写代码。

    【讨论】:

    • 当预测文本开启时如何获取键盘高度?
    • 来自相同的代码,正如我在上面的答案中所说,如果预测为 ON,您将获得 253 作为高度,否则为 216
    • 禁用预测后尝试运行代码,得到一致的高度
    • 不,我的朋友 568 在横向模式下不是高度而是宽度。我还在横向模式下测试了你的代码,预测键盘的高度是 193,没有 162。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 2014-11-10
      • 1970-01-01
      • 2019-05-23
      • 2018-03-07
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      相关资源
      最近更新 更多