IOS下 input 被软键盘方案遮盖问题解决
前言:
并没有完美解决 !
场景:
最近在做企业微信H5的一个项目,里面有个动态列表页,开始输入框是隐藏的,点击评论才会出现并让 input 聚焦。经过测试在安卓上面应该没什么问题,但是iOS上面会出现 input 被软键盘遮盖或者半遮盖、甚至发送按钮不能点击的状况。
总的来说问题有点小严重。
查阅百度:
好的,百度一搜,哇!解决方案很多,我就放心的去抽了一根烟,想着分分钟完事。BUT 经过试验 百度 “ios 下input 被软键盘遮盖” 前两页没有一个能解决我的问题的!!!
不过收获还是有的... 参考文章如下(写了三个比较可以的吧)
https://blog.csdn.net/github_37533433/article/details/66471962
https://juejin.im/post/5b0401b2f265da0b71569ca0
https://www.cnblogs.com/wx1993/p/6059668.html
解决(Vue):
因为 iOS 下软键盘弹出并不会改变窗口高度所以也就没试监听 window 的 resize 事件。
第(n-2)次是在输入框获取焦点的时候:
// 输入框获得焦点
onFocus(){
var that = this;
setTimeout(function(){
that.sendText.scrollIntoView(true);
that.sendText.scrollIntoViewIfNeeded();
},100);
},
scrollIntoView(true):滚动浏览器窗口或容器元素,以便在当前视窗的可见范围看见当前元素。
有效果,但是还是会有问题,偶尔还是会出现半遮盖的情况 iPhone6 尤为明显。
第(n-1)次 是使用的滚动到底部的方法,因为项目的动态列表是有分页的,所以适当的改了一下。
created(){
var u = navigator.userAgent;
this.isAndroid =u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; //Android终端
this.isIOS =!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //IOS终端
},
methods:{
// 输入框获得焦点
onFocus(){
var that = this;
this.bfscrolltop = document.body.scrollTop; // 记录当前位置
if(this.isIOS){
setTimeout(function(){
document.body.scrollTop = document.body.scrollTop*1 + 200;
},300)
}
},
},
在点击发送的时候设置: document.body.scrollTop = this.bfscrolltop;
问题:
1、在监听失去焦点的时候设置 document.body.scrollTop = this.bfscrolltop 是点不了发送的 (这就触及到我知识的盲区了)
2、ios 不管型号(可能除了SE)第一次点击评论还是可能会出现半遮盖,或者全遮盖的情况。
第n次 是在点击评论的时候 加了一个定时器(我不知道为什么这样写就好了!)
created(){
var u = navigator.userAgent;
this.isAndroid =u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; //Android终端
this.isIOS =!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //IOS终端
},
methods:{
// 点击评论
commentClick(index){
var that = this;
if(this.isIOS){
setTimeout(function(){
document.body.scrollTop = document.body.scrollTop*1 + 300;
},300)
}
that.$refs.import_inp.focus();
},
// 输入框获得焦点
onFocus(){
var that = this;
this.bfscrolltop = document.body.scrollTop; // 记录当前位置
if(this.isIOS){
setTimeout(function(){
document.body.scrollTop = document.body.scrollTop*1 + 200;
},300)
}
},
// 输入框失去焦点
changeBlur(){
var that = this;
// input 输入框 内无内容的情况下点击ios软键盘的完成是可以回去的
if(this.inputVal == ""){
document.body.scrollTop = this.bfscrolltop;
}
},
// 点击发送
sendComment(){
document.body.scrollTop = this.bfscrolltop;
},
},
注:以上代码只是关于input输入框被遮盖的。
目前在 iPhone7 iPhone6 iPhoneSE 上没什么问题
问题:
1、当输入框内有内容的时候,关掉软键盘是不能返回记录的位置的
总结:
目前只能解决到这个地步了。黔驴技穷。
有什么好的解决方案还望看到的朋友指点一二。
根据自己的项目问题选择一个尽可能最好的方法解决
IOS下 input 被软键盘方案遮盖问题解决的更多相关文章
- 移动端踩坑之旅-ios下fixed、软键盘相关问题总结
最近一个项目掉进了移动端的大坑,包括ios下fixed布局,h5唤起键盘等问题,作为一个B端程序员,弱项就是浏览器的兼容性和移动端的适配(毕竟我们可以要求使用chrome),还好这次让我学习了一下相关 ...
- ios safari input fixed 软键盘里的爱恨情仇
请看第一题: 为什么我的input获取焦点后,被输入法遮住了. 解决办法: 源码: <!DOCTYPE html> <html lang="en"> < ...
- ios下input focus弹出软键盘造成fixed元素位置移位
正常状态下 input focus软键盘弹出时 问题描述: 头部结构fixed,滚动到下部内容区域,input.textarea等focus弹出软键盘时,头部位置偏移被居中(该问题ios7 beta3 ...
- 页面的input唤醒软键盘再收起后,页面会出现软键盘高度的空白背景
微信浏览器在版本6.7.4及以上会有这个bug:页面的input唤醒软键盘再收起后,页面会出现软键盘高度的空白背景,触摸到滚动条会消失恢复! 解决代码 后台框架嵌入iframe的情景,iframe内部 ...
- input获取焦点软键盘弹出影响定位
解决移动端底部fixed和input获取焦点软键盘弹出影响定位的问题$(document).ready(function() { var ...
- web前端 在 iOS下 input不能输入 以及获取焦点之后会出现蓝色的border轮廓
iOS下 input 不能获取焦点 获取焦点后:设置border:none无效果 .hb_content input{ display: inline-block; margin-left: 0.22 ...
- ios下input获取焦点以及在软键盘的上面
<!----/此方法基于zepto.min.js--> <!--/div元素没有blur和focus事件,blur focus 只适用于input 这类的表格元素--> < ...
- IOS下HTML5获取焦点 弹键盘
IOS下sifari和webview默认屏蔽textarea/inputbox获取焦点弹出键盘 苹果移动设备的WebView默认屏蔽textarea/inputbox获取焦点弹出键盘,需要在APP页面 ...
- ios移动输入框被软键盘遮挡
页面输入框会出现被软键盘挡住的问题: 解决方法:获取input点击事件设置body高度 $('input').bind('click',function(e){ var $this = $(this) ...
随机推荐
- Python小白学习之路(四)——第一次练习题
写在前面: 今天下雪了呢!连着两天都没有更新学习记录. 我没有偷懒呢.做了一天的练习题,昨天学的内容还没总结完,太累了就回去睡觉了 连续一周早起,强大的内心也无法支撑我疲惫的身体 今天早起做了整理.加 ...
- Spark安装过程
Precondition:jdk.Scala安装,/etc/profile文件部分内容如下: JAVA_HOME=/home/Spark/husor/jdk CLASSPATH=.:$JAVA_HOM ...
- linux中的tar命令的使用
参考网址: https://www.cnblogs.com/newcaoguo/p/5896975.html https://www.cnblogs.com/xccjmpc/p/6035397.htm ...
- Spring Security构建Rest服务-0801-短信验证码发送
实现短信验证码登录 开发短信验证码接口 校验短信验证码并登录 短信验证码和图片验证码开发思路类似: 1,我们访问一个controller 2,在controller里调用短信验证码生成接口生成验证码 ...
- GODADDY 优质DNS 未被墙
下面列出的是我本地测试出的优质服务器 NS10.DOMAINCONTROL.COM NS12.DOMAINCONTROL.COM NS14.DOMAINCONTROL.COM NS19.DOMAINC ...
- 【链表】 Reverse Linked List II
题目: Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1- ...
- Windows 添加用户
不多说,直接干货! 欢迎大家,加入我的微信公众号:大数据躺过的坑 人工智能躺过的坑 同时,大家可以关注我的个人博客: http://www.cnblogs.com/zl ...
- IntelliJ IDEA使用心得之非Maven项目篇
今天和大家分享下非Maven项目在IDEA中的配置方法,由于非Maven项目的配置方法基本相同,所以此篇只对不同点进行说明. 1.声明依赖库 我们可以使用库的方式来添加项目依赖,这是一个非常好的实践. ...
- lucene源码分析(2)读取过程实例
1.官方提供的代码demo Analyzer analyzer = new StandardAnalyzer(); // Store the index in memory: Directory di ...
- [uva] 1671 History of Languages
题目描述 输入两个DFA,判断是否等价. https://uva.onlinejudge.org/external/16/1671.pdf 输入 第一行T 可以接受的字母表 第二行N 状态数 接下去N ...