先说一下业务场景。

界面有弹窗,在弹窗内输入时,弹出软键盘输入短信验证码。验证成功后隐藏弹窗,弹出有复制按钮的弹窗。点击复制按钮,复制相关内容。

在开发这个功能的时候,有两个渠道,一个是支付宝h5,一个是微信h5。结果是微信IOS端出现了bug,弹出有复制按钮的弹窗后,点击复制按钮没有任何反应。

于是,我这个比较直的人就一直点,点点点,并且进行了计数,一开始,发现大概点了有一分钟后,界面没有卡了,点击复制按钮成功复制到了内容。我首先想到的是复制插件是不是有问题,查看了复制插件的源码,发现复制插件并没有设置什么时间,其他用到复制插件的地方也没有同样的问题,所以,排除是复制插件的问题。

由于卡顿时间的考虑吧。我想到了是不是哪些地方有setTimeout,setInterval的定时器导致卡顿,刚好也发现有个地方设置了时间定时器,并且在用不到这个时间定时器的时候没有清除时间定时器。于是,在用不到时间定时器的时候将这个定时器给取消了。但是,取消后,bug并没有消失。。。但是,经过多次测试,好像页面卡顿的时间缩小了!于是,找到了发短信验证码的时候,有个倒计时,当短信验证码验证成功的时候,这个倒计时没有取消,还在继续倒计时,于是,在验证成功的时候,取消了倒计时,然鹅,bug依旧存在。。。判定并不是时间定时器,以及计时器的原因导致。。。路漫漫其修远兮啊。。。

由于这里动画比较多,于是考虑是不是动画太多导致卡住了。又是网上一通搜索。什么ios微信animation卡顿掉帧,h5动画卡顿优化,还想到了是不是tranform过渡动画过快,导致卡顿。最后都不能找到任何相关的蛛丝马迹。。。。所以,这个想法也暂时排除,并且,复制按钮的时候所有动画也都结束了,应该排除这个想法。

又想是不是z-index的问题,复制按钮的弹窗z-index过低导致,于是设置一个极其大的z-index,这个想法也宣告失败。。。

好吧,这到底是个什么样的bug?我太南了。。。

痛定思痛,我回想了一遍流程。弹窗=>输入验证码=>隐藏验证码弹窗=>弹出复制按钮弹窗。突然,灵光一闪,输入验证码的时候需要弹出软键盘,ios的软键盘一直以来有个顽固的bug!H5 ios软键盘弹出后会导致撑起页面不下来!虽然这里并没有看到页面被撑起来的迹象,我之前解决过一次这样的bug,我只是抱着一试的想法,先将弹出软键盘的流程给去掉,直接弹窗=>隐藏验证码弹窗=>弹出复制按钮弹窗。在这个流程下,复制按钮并没有卡顿!离成功仅一步之遥!确认过眼神,这就是ios软键盘的锅!天呐,太坑爹了!于是,在验证完短信验证码的时候设置了window.scrollTo(0, 0);bug消失,天下太平。。。

最后的最后,终于解决了。。。。

总结一下,这个bug的痛点在于页面并没有出现撑起来的效果,而且涉及的东西比较多,给了它足够的隐藏空间。

ios微信软键盘之殇相关推荐

  1. ios获取软键盘完成事件

    ios获取软键盘完成事件,通过判断input的onBlur事件即可

  2. 仿微信软键盘弹出与隐藏

    仿微信软键盘弹出与隐藏,效果图如下: 实现输入框弹出,软键盘弹出,获取焦点,否则失去焦点. 首先在 AndroidManifest 文件的对应 Activity 中加入下面代码: android:wi ...

  3. IOS 自定义软键盘功能,修改换行键为发送键

    IOS项目是使用混合模式开发,在开发聊天功能时:发现软键盘不能像QQ.微信那样,换行键不能变为发送:网上说是因为输入框类别导致:尝试过以后,还是不行:然后想到用IOS native解决: 先说一下,原 ...

  4. h5 ios中软键盘弹起后 fixed定位失效

    position: fixed;在ios手机中会存在一个失效情况: 如果页面有输入框存在,点击输入框软键盘弹起后会发生一个现象: 1.针对当前内容高度小于屏幕高度时: 上下滑动页面时候,发现之前fix ...

  5. 解决h5底部输入框在ios被软键盘顶飞 软键盘消失还下不来

    好吧,其实不是顶飞,准确点说应该是h5页面fiexed定位在底部的输入框在ios软键盘弹起的时候软键盘跟输入框有时会有一段悬空的距离,无法紧贴.在安卓机子上则没有这样的情况. 解决方法是通过h5的sc ...

  6. ios 弹起软键盘position: fixed;失效

    <view class="stores-top">                 <input type="text" placeholde ...

  7. 处理ios软键盘弹起和收起时页面滚动问题

    处理ios软键盘弹起和收起时页面滚动问题 背景: 在开发添加主播功能时,页面底部需要弹出一个抽屉弹窗,点击抽屉上的输入框,会唤起软键盘,由于iOS的软键盘触发方式是将页面滚动,所以导致页面位置偏移 b ...

  8. h5 移动端 监听软键盘弹起、收起

    前面一篇博客 h5 安卓 键盘弹起界面适配 修改webview高度提到了在adnroid中如何监听软键盘的弹起与收起,是利用的窗口的高度发生变化 window.onresize事件来做突破点的,但是i ...

  9. Android软键盘的全面解析,让你不再怕控件被遮盖

    本文转载自:https://blog.csdn.net/l540675759/article/details/74528641 背景 1.Android软键盘这块从我入职到现在,是一个一直纠缠我的问题 ...

最新文章

  1. Android中的意图匹配--IntentFilter的作用
  2. Gartner:2015年SIEM(安全信息与事件管理)市场分析
  3. python c 语言接口,## 人生苦短我用python[0x08] 使用ctypes调用c语言接口 ##
  4. 施一公:带好学生,是特别要紧的事
  5. 初学者python笔记(re模块、正则表达式完全解析)
  6. 中国内镜超声针市场趋势报告、技术动态创新及市场预测
  7. ubuntu 搜狗输入法的安装
  8. json 插入数据_Oracle Database 20c:JSON功能增强
  9. 爆炸的符卡洋洋洒洒(01背包)
  10. 在 Ubuntu 中用 UFW 配置防火墙
  11. 安徽考区计算机水平考试试卷,安徽考区计算机水平考试试卷2011.6
  12. c语言实现61850协议,IEC61850开发库 libIEC61850提供了用C语言编写的IEC 61850 / MMS - 下载 - 搜珍网...
  13. 查询student表中姓童的学生情况
  14. CF与OF有什么区别?
  15. 使用Jmeter输出错误响应结果到日志
  16. PHP面向对象5-基本概念
  17. java小米面经_java小米面经,面试题整理(三面)
  18. C#实现改变图片的像素
  19. 手机上流行的各类谜语及谜底
  20. React+Redux技术栈核心要点解析(上篇)

热门文章

  1. java双色球抽奖。抽奖号码由六个红球号码和一个蓝球号码组成红色号码由1~33组成,不能重复,蓝色号码由1~16组成可以与红色号码数组重复。用户输入中奖号码后打印最后的中奖结果情况。
  2. 网络原理实验4 路由协议的配置
  3. 操作系统_第三章处理器管理_批处理作业的调度算法
  4. 刀具寿命预测特征处理方法、刀具磨损机理
  5. 通信里 星座图 到底是什么
  6. [Python图像处理] 二十九.MoviePy视频编辑库实现抖音短视频剪切合并操作
  7. 云开发系列课程 | FaaS场景下的SSR框架
  8. nba购票系统php,2019nba中国赛门票怎么买?(附票价+购票方式)
  9. ASR技术和TTS技术含义及区别
  10. Unity与全息投影