最近在做一个仿微信的聊天界面,有一个固定在页面底部的input框,本来使用fixed定位在底部,在android手机上没有任何问题,但在iOS上当点击输入内容的时候会出现不同情况的原生键盘遮挡输入框的情况。度娘出了很多解决方法,但没有一个方法可以完美解决,而且发现很多人都有这个问题,自己就苦思冥想出了一个相对不错的解决方法,跟大家分享一下。

先跟大家列举一下网上的解决方法,还有我的实践结果

position

// 修改position:fixed; 为position:absolute;
// position:fixed;
position:absolute;
复制代码

实践证明没有任何影响,就算不使用定位也会出现遮挡输入框的情况

scrollTop

setTimeout(function(){document.body.scrollTop = document.body.scrollHeight;
},300)
复制代码

这种方法在iOS10上可以解决遮挡的问题,但在iOS11上会出现键盘先将输入框顶上去然后输入框又快速回到屏幕底部再次被遮挡的情况

scrollIntoView scrollIntoViewIfNeeded

这两种方法完全看不出任何效果

我的解决方法

直接上代码

// css
.mainBox{height:100vh;position:relative;
}
.inputBox{position:absolute;bottom:0;
}
// 输入框获得焦点事件
onFocus() {setTimeout(function(){// 设置body的高度为可视高度+302// 302为原生键盘的高度document.getElementsByTagName('body')[0].style.height = (window.innerHeight + 302) + 'px';document.body.scrollTop = 302;}, 300)
}
// 输入框失去焦点事件
onBlur() {// 设置body恢复原来的高度document.getElementsByTagName('body')[0].style.height = window.innerHeight + 'px';
}
复制代码

这种方法相当于给body增加一个键盘的高度,正好可以占掉键盘的位置,把页面内容顶上去,然后还要阻止一个body的滚动事件,防止用户滑动页面把增加的302的白页面滚动出来。 (因为手边没有iPhone X手机,所以在iPhone X上兼容可能是不太完美,不过也就只是键盘的高度不同。可以通过判断手机型号设置不同高度的方式解决)

302虽然看起来不靠谱,但现在苹果的大小屏手机原生键盘都是这个高度(目前测试在5s、7p、8没有问题),现在来说没有多大问题。也正在寻找更加完善的方法,结果出来再跟大家分享。别的输入法也正在想办法解决,有好的解决办法的欢迎一起交流学习

转载于:https://juejin.im/post/5b0401b2f265da0b71569ca0

修复苹果iOS 原生键盘遮挡input框相关推荐

  1. 移动端踩坑记---------ios下输入法遮挡input

    移动端踩坑记---ios下输入法遮挡input   最近项目中遇到了一个比较严重移动端IOS下的Fixed兼容问题,网上也有很多人躺在这个问题上了,现在开始详细讨论一下这个问题.   现在我们先来看一 ...

  2. js手机键盘遮挡_iphone手机微信页面软键盘遮挡input输入框解决方法

    现象描述:iphone手机微信页面,用position: fixed;定位的input或textarea输入框,在获取输入焦点时,会被弹出的输入法软键盘遮挡,导致用户无法看到输入框,效果如图: 简化测 ...

  3. iOS 解决键盘遮挡输入框问题,输入框随键盘弹起上移,切换输入法时动态调整 (Swift)

    最近在项目中需要解决苹果系统输入法遮挡输入框的问题,预期结果为: 若键盘弹出后会遮挡输入框,则输入框随键盘弹起上移,输入法切换时输入框始终保持在距键盘上方 4pt 处; 若键盘弹出后不会遮挡输入框,但 ...

  4. iOS 处理键盘遮挡TextField、TextView问题

    之前处理键盘遮挡问题都是在每一个控制器进行单独处理,这样做真的是非常的费事,今天在做项目的时候就想到自己封装一个,记录一下这个"跌宕起伏"的过程. 思路是这样的:计算文本编辑控件F ...

  5. ios 处理键盘遮挡问题

    项目中经常会用到输入框,难免会碰到键盘遮挡其他控件的问题 那么如何解决 键盘遮挡的问题呢? 首先这是我的项目中的界面图 然后我们点击下面的详细地址或者输入验证码 我们发现键盘遮蔽住了下面的输入框 接下 ...

  6. 比较简单的解决键盘遮挡文本框的简单方法

    1.首先需要在控制器的view中添加上一个scrollView,并遵循UITextFieldDelegate代理,并设置文本框的自身代理 2.添加手势监听 UITapGestureRecognizer ...

  7. 苹果原壁纸高清_苹果 | ios原生壁纸高清

    点击[苹果高清壁纸]右上角找到[-] 关注设我为✨星标/置顶 ✨爱你们哟 提醒:由于微信公众号近期改变了推送规则(非推送时间排序),如果你想如常看到我们的文章,可以将本公众号设为星标或置顶,或每次阅读 ...

  8. 解决html中手机键盘遮挡input输入框

    多读多写多记录,多学多练多思考. ---------- Banana.Banuit(香柚帮) 解决方法: scrollIntoView(alignWithTop): 滚动浏览器窗口或容器元素,以便在当 ...

  9. 苹果浏览器弹出软键盘遮挡底部fixed定位问题

    ios微信浏览器将fixed定位自动转换为absolute定位 软键盘遮挡input弹窗 如下图: 苹果手机会弹出软键盘后遮挡住这个评论发布框 解决办法: 我采用让他滚动到底部,然后软键盘就不会挡住输 ...

最新文章

  1. Epic苹果诉讼案,却把索尼微软Steam都拉下水,网友忙吃瓜
  2. nginx进程管理之worker进程
  3. hadoop HA 之 QJM
  4. 威纶触摸屏使用说明书_MODBUS通信之触摸屏与变频器通信知识分享(一)
  5. 训练中Loss为Nan的原因,梯度消失或者爆炸的优化
  6. 【初赛】NOIP2018程序模板
  7. windows10重装后锁定其他盘_电脑重装Windows10系统步骤
  8. 使用Tftpd64收集交换机日志
  9. oralce 12c集群 ora-01033
  10. 抓取微信小程序数据加密内容
  11. 葡萄城报表模板库再次更新!补充医院Dashboard及房地产销售行业报表
  12. 计算机登录网站慢手机快,手机WiFi网速慢,简单输入几个数字立马变快!
  13. window VNC Viewer设置屏幕分配率
  14. ubuntu20.04安装常用的软件
  15. 静态页面练习——京东商城登录页面
  16. DOS系统和windows系统有什么区别
  17. 两种WIFI破解的方法
  18. python爬取淘宝商品做数据挖掘
  19. c语言 unique函数,C++ unique(STL unique)算法详解
  20. OSI模型及数据封装过程

热门文章

  1. 三因素方差分析_重复测量方差分析的操作教程及结果解读
  2. DaVinci Resolve Studio 17 Mac 达芬奇剪辑调色软件
  3. 独立架设车牌识别服务器
  4. 开关电源怎么测试文波_电源纹波测试的正确方法,值得你学习
  5. tf实现Focal-Loss
  6. 强化学习笔记(三)Value Function Approximation
  7. 20考研400+上岸西北工业大学软件工程考研经验贴
  8. python实战课程--控制结构
  9. 理光 java,理光打印机驱动安装步骤,以及如何设置打印机的IP地址
  10. datetime报错 sql脚本_Linux中Mysql数据库备份shell脚本编写实例