Android IOS键盘弹起对h5界面的影响

news/2024/9/18 3:55:25/文章来源:https://www.cnblogs.com/rt8090/p/18358073

Android

IOS

一、ios 的具体情形

问题一:

在iOS 8.2 之后,Webkit 鼻祖 Safari 将 fixed 元素的布局基准区域从键盘上方的可见区域改成了键盘背后的整个视窗,也就是说此时的webview高度并不会发生变化,键盘是直接盖在webview上方的

IOS 为了不让 webview 压缩,并且为了不让软键盘遮挡输入框,他们自作聪明地把 webview 整体往上移动,最大移动距离为软键盘的高度。

2115940970-66174ae809413.webp

问题二:

此时的webview是可以滑动的,那么就会出现有用户会将输入框滑动到键盘下方

并且你会发现,在页面的上方与下方都多出了一个不论是 Viewport 还是 VisualViewport 都无法到达的白色衬底区域

320305956-66174afae13d2.webp

二、监听方案

Android 使用 resize 来实现,但对于 IOS,webview 高度并不发生变化,所以触发不了 resize

所以 IOS 需要通过 focusin & focusout 来监听

export const watchKeyBoard = (callback: (isShow: boolean) => void) => {//  IOSif (isIOSByUA()) {document.body.addEventListener('focusin', () => {//软键盘弹出的事件处理callback(true)})document.body.addEventListener('focusout', () => {//软键盘收起的事件处理callback(false)})} else {//  Androidconst originalHeight =document.documentElement.clientHeight || document.body.clientHeightwindow.addEventListener('resize', () => {const resizeHeight =document.documentElement.clientHeight || document.body.clientHeightif (resizeHeight - 0 < originalHeight - 0) {// 键盘弹起事件callback(true)} else {// 键盘收起事件callback(false)}})}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/783548.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年7月文章一览

2024年7月编程人总共更新了5篇文章: 1.2024年6月文章一览 2.《Programming from the Ground Up》阅读笔记:p19-p48 3.《Programming from the Ground Up》阅读笔记:p49-p74 4.《Programming from the Ground Up》阅读笔记:p75-p87 5.《Programming from the Ground Up》阅读…

万字长文带你了解Java日志框架使用Java日志框架

大家好,我是晓凡 一、日志概念 日志的重要性不用我多说了,日志,简单来说就是记录。 用来记录程序运行时发生的事情。比如,程序启动了、执行了某个操作、遇到了问题等等,这些都可以通过日志记录下来。 想象一下,你开了一家店,每天的营业额、顾客的反馈、商品的进出、库存…

留数定理笔记

一些定理的总结和应用, 仅个人复习使用. Laurent 展开: \(f(z)=\sum_{l=-\infty}^{\infty}a_l(z-b)^l\). 留数: \(f(z)\) 在某个孤立奇点的去心邻域内 Laurent 展开的 \(-1\) 次方系数, 记为 \(\left.\operatorname{res}f(z)\right|_{z=b}\). 注意 \(f(z)\) 在 \(z=\infty\) 处…

如何记忆英语单词ward的意思

ward读作[wɔrd](US)时,意思有: n.病房;牢房;选区;受监护人(受法院或监护人保护的人,尤指儿童) v.防止;守护;收容 其中牢房的意思引申出两个词:warder,意思是狱警。即看守牢房的人。 warden,意思是典狱长。即负责管理整座监狱的人。所以,ward带有受看护的人所居…

PV 与 PVC 状态迁移

目录一、概述1、PV2、PVC二、状态变化三、实例1、单独创建 PV1.1、创建并应用 PV1.2、查看刚创建的 PV 状态2、单独创建 PVC2.1、创建并应用 PV2.2、查看刚创建的 PVC 状态3、等待绑定4、删除 PV4.1、查看 PV,PVC 状态4.2、真正删除 PV4.3、查看PV PVC 状态5、重新创建 PV5.1、…

Diff and Patch

Diff and Patch Git diff Git diff:索引区(--) VS 工作区(++) Git diff --cached:索引区 VS 代码仓库【注意:git add. 将修改添加到索引区里面去】 git cat-file -p 是一个 Git 命令,用于查看 Git 对象的内容。Git 对象可以是提交(commit)、树(tree)、标签(tag)、…

全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典

字典是非常好用的容器,它可以用来直接将一个对象映射到另一个对象。一个拥有属性的空对象在某种程度上说就是一个字典,属性名映射到属性值。在内部,对象通过字典来表示属性,其值为属性的值或对象的方法。全网最适合入门的面向对象编程教程:36 Python 的内置数据类型-字典摘…

修复IAT

我们以vmp为例 https://wwmf.lanzout.com/i66kC27a0ekj 密码:2hq4 修复跳转表 我们来到OEP通过运行,我们发现两个API调用获取这两个API调用的地址,然后在一个具有执行权限的代码段中 写入跳转语句,如下图所示记住指令之前要相隔一个字节,也就是与6对齐 然后将call 地址指向…

基于星座图整形方法的QAM调制解调系统MATLAB误码率仿真,对比16,32,64,256四种QAM调制方式

1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 2.算法涉及理论知识概要星座图整形技术旨在通过优化星座点的布局来改善系统的性能。这包括但不限于:1.功率效率提升:通过非均匀分布星座点,可以减少符号间的距离,从而在相同的平均功率下,传输更多信息比…

如何下载 .ts 视频 All In One

如何下载 .ts 视频 All In One .m3u8 视频下载器的工作原理分析和核心代码解析如何下载 .ts 视频 All In One.m3u8 视频下载器的工作原理分析和核心代码解析errorsmacOS ffmpeg Library not loaded: /usr/local/opt/jpeg-xl/lib/libjxl.0.7.dylib$ ffmpeg -i https://cdn14.boo…

基于EM期望最大化算法的GMM模型参数估计matlab仿真

1.程序功能描述 基于EM期望最大化算法的GMM模型参数估计是一种常用的统计学习方法,用于估计高斯混合模型(Gaussian Mixture Model,GMM)的参数。仿真输出EM算法的迭代收敛曲线,并得到GMM的参数估计结果。 2.测试软件版本以及运行结果展示MATLAB2022a版本运行 3.…

基于模糊控制算法的倒立摆控制系统matlab仿真

1.课题概述基于模糊控制算法的倒立摆控制系统,模糊规则,模糊控制器等通过MATLAB编程实现,通过模糊控制器对小车倒立摆平衡系统进行控制,输出倒立摆从不稳定到稳定的动画过程,最后输出小车,倒立摆的收敛过程。2.系统仿真结果3.核心程序与模型 版本:MATLAB2022afor ij=Ts:…