登录  /  注册
博主信息
博文 82
粉丝 0
评论 1
访问量 125619
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
一段心酸的移动端键盘遮挡问题探索之路
子龙的博客搬家啦httpswwwcnblogscomZiLongZiLong
原创
1996人浏览过

上个周的上个周,接手了一个类似qq聊天的web移动端项目,当然了对于这种看起来有很神奇效果的、并且很骚的项目,我向来是有兴趣的。根据我往年的经验,界面分分钟搭好了就像这样:

QQ截图20180528143808.png

然而在移动端,尤其是IOS上测试的时候,就很悲剧了,刚把测试包发出去,总监的iphoneX便出现了弹出的键盘遮挡住输入框的bug,wtf!!!好吧,总监最大,赶紧调呗。第一次遇到这种东西,当然是百度了,找来找去,结果网上也找不到一个完美的解决方案。最后得到的答案就是ios对fixed布局的支持不是那么好!!!wtf,说好的操作系统的优越性呢?

u=3674226428,2390494977&fm=27&gp=0.jpg

所以就不能使用fixed布局了,当然了起初我是不服的,采取的解决方案是输入框获焦之后让他所在的块儿的定位属性改为static,再把窗口滚动到底部。嗯,确实有效果,然而此时产品狗的ip8 plus又崩了!!! 因为这个手机只要输入框所在的块儿的定位属性为static他自己个儿就很好的出现了,也就是说如果没有滚动才是正确的。那就加个if吧。暂时解决了这个问题。

但是这个bug始终萦绕在我心头,使我很难受,最后找了个网上的教程,布局,js,完全一步步的来,然鹅,各个手机上都差不多的时候,ipx又崩了。。。

而且这个方法采用interval不断使页面往底部滚,当用户尝试往上滚动屏幕的时候,就会显得非常奇怪,怎么使当用户让页面滚动的时候不那么奇怪呢,首先肯定能想到的是就是在scroll事件里边clearInterval,然鹅。。。当键盘弹出的时候,interval里边的代码就会执行,scroll里边的代码就会被触发,这样一来,想让页面滚动到底部的策略就无法实现了,所以直接绑定scroll事件显然是不行的。

键盘从弹出到静止是一段无法确定的时间,但是唯一可以确定的是,当键盘完全弹出,并且页面不再滚动(也就是scrollTop)的值不再发生变化的时候,interval里边的代码就可以取消他的执行了,所以,最后采用的方法是当容器的scrollTop不再变化的时候取消interval,目前这个效果得到了绝大多数手机的认同,但是狗日的ipx又需要额外的私人订制,除此之外,现在是没多大问题啦,但是我相信 后续bug还是会继续出现的。

--20180528


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学