欢迎光临
我们一直在努力

iOS 12.0 WebView键盘弹出,关闭后界面没有回收的问题

iOS 12.0 WebView键盘弹出,关闭后界面没有回收的问题

背景

公司有人反馈,iOS 12.0的手机上,H5页面有个地方键盘弹出了,关闭之后,再次点击输入框,没有反应了,其实是界面上移了之后,没有回到原来的位置。所以导致再次点击输入框时,没有反应

修改

最开始,修改方法时,添加iOS 12.0之后,设置 contentInsetAdjustmentBehavior 为 UIScrollViewContentInsetAdjustmentAutomatic,设置了之后,键盘的问题解决了,但是又出现新的问题,iPhone X系列的全面屏的适配,之前H5页面body写的height:100%的地方,会显示高度不对。

    if (@available(iOS 12.0, *)) {
self.web.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
}

于是笔者再次尝试修改:

参考iOS12 WKWebView出现input 键盘页面上顶不下移解决方法,在H5界面监听键盘弹出和收起,在收起时,对webview的scrollview做偏移处理,设置后,发现对笔者的项目来说仍旧不生效,笔者的项目同一个网页上有多个可输入的地方,且有在弹出框输入的操作。

故而再次修改:

笔者发现,有人给出参考方法,由H5端,监听键盘弹起和回收,然后进行处理,但是如果让H5处理,需要每个业务的H5都要单独处理,所以笔者就想,由原生监听键盘收起的通知,然后调用js的方法,代码如下:

viewDidLoad中,针对版本处理进行处理,添加键盘回收的通知

 if (zDeviceVersion.floatValue >= 12.0 && zDeviceVersion.floatValue 

然后在通知的方法中实现,调用JS处理方法

- (void)keyboardWillHide:(NSNotification *)note {
NSString *jsStr =
@\"setTimeout(() => {const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;window.scrollTo(0, Math.max(scrollHeight - 1, 0));}, 300);\";
[self.web evaluateJavaScript:jsStr completionHandler:nil];
}

参考

iOS12 WKWebView出现input 键盘页面上顶不下移解决方法

ios 微信webview在键盘关闭后,没有自动回退页面

文章来源于互联网:iOS 12.0 WebView键盘弹出,关闭后界面没有回收的问题

赞(0) 打赏
未经允许不得转载:黑客技术网 » iOS 12.0 WebView键盘弹出,关闭后界面没有回收的问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏