• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iOS11 键盘问题 - 键盘高度不正确

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:24:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

键盘有时会向上移动一点,如图here

首先,这个问题只发生在 iOS11 上,而不是在早期的 iO​​S 版本上。 其次,这个问题发生在应用程序中的每个 UITextField 实例中,不仅在特定 View Controller 的一个特定文本字段中。

通过观察UIKeyboardWillShowNotification,发现UIKeyboardFrameEndUserInfoKey中存储的键盘边框不正确,准​​确的说是高度错误。

- (void)keyboardWillShowNSNotification *)notification {
    NSDictionary *info = [notification userInfo];
    NSString *curveValue = [info objectForKey:UIKeyboardAnimationCurveUserInfoKey];
    CGRect rect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    NSLog(@"keyboard frame: %@", NSStringFromCGRect(rect));
}

我们在 iPhone7 (11.1) 上运行时得到这样的日志:

keyboard frame {{0, 451}, {375, 216}}
keyboard frame {{0, 292}, {375, 375}}
keyboard frame {{0, 451}, {375, 216}}
keyboard frame {{0, 292}, {375, 375}}
keyboard frame {{0, 292}, {375, 375}}

216 应该是正确的高度,而 375 是错误的。奇怪的是,键盘的高度恰好等于屏幕的宽度。

根据我得到的事实,我认为这是一个 IOS 11 键盘问题,因为它只发生在 iOS 11 上,并且键盘的高度肯定是由 iOS 控制的,但是由于某种原因它返回了错误的高度。

然而,棘手的是,我从我们的应用程序中提取了一个包含文本字段的特定 View Controller 并创建了一个单独的演示项目,然后一切正常。而且我没有发现谷歌搜索发生在其他人身上的类似问题。所以我怀疑这可能是因为我们的应用程序中的某些设置导致了这个 iOS11 键盘高度问题。

你们以前有没有遇到过这种奇怪的问题?或者有什么你们能想到的可能是罪魁祸首吗?我已经用完了我的想法。谢谢!



Best Answer-推荐答案


整理好了。终于发现是因为我们项目中用到了一个UIView类。

- (void)setWidthCGFloat)width;
- (void)setHeightCGFloat)height;
- (void)setSizeCGFloat)size;
- (void)setXPosCGFloat)xPos;
- (void)setYPosCGFloat)yPos;
- (void)setXPosCGFloat)xPos yPosCGFloat)yPos;

从 iOS11 开始,这些方法不知何故变成了保留方法,重写这些方法会导致这个烦人的问题。

关于iOS11 键盘问题 - 键盘高度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624164/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap