博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios 中 吊起小键盘后页面留白问题
阅读量:6327 次
发布时间:2019-06-22

本文共 1661 字,大约阅读时间需要 5 分钟。

问题描述:

页面中用fixed定位,当点击input唤起小键盘时,页面整体向上移动(由于主题和logo无法切出来,底图为背景图,要求输入框等内容不能这点,所以采用 主要内容区fixed定位布局)

页面为下图:

在ios中 (测试机为ihpone 6)

吊起小键盘后,会发生 内容区移动的问题

在安卓中 会遮挡输入框 可以滑动 但是 将键盘收起后 位置不变

为了解决ios中的留白问题,再次进行记录

解决此问题的方法为,页面中input 吊起键盘 blur事件中  调整位置

js代码:

$('#input').blur(function(){        resolveBug();    })    //微信版本bug解决方法    function resolveBug( e ){        setTimeout(function(){            // alert(1);            if(document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA'){                return            }            var result = 'pc';            if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOS                result = 'ios'            }else if(/(Android)/i.test(navigator.userAgent)) {  //判断Android                result = 'android'            }            if( result = 'ios' ){                document.activeElement.scrollIntoViewIfNeeded(true);            }        },10)    }

  解析:

scrollIntoView(alignWithTop): 滚动浏览器窗口或容器元素,以便在当前视窗的可见范围看见当前元素。

alignWithTop 为 true,那么窗口滚动之后会让调用元素的顶部与视口顶部尽可能平齐;

alignWithTop 为 false,调用元素会尽可能全部出现在视口中,可能的话,调用元素的底部会与视口顶部平齐,不过顶部不一定平齐。

支持的浏览器:IE、Chrome、Firefox、Safari和Opera。

 

 

其他方法, scrollIntoViewIfNeeded(alignCenter) scrollByLines(LineCount)

支持的浏览器:Chrome,Safari

 

其他方法,针对input输入框被虚拟键盘挡住的问题

当软键盘被唤起是,使用 scrollTop() 方法使页面滚动到指定的位置  直接 

window.scrollTo(0, scroll);

  不过这种办法也有问题:如果页面上有按钮需要操作 ,例如,输入框+登录按钮,输入完文字,点击“登录”,触发click事件的时候,会导致页面先触发blur事件,键盘回落,按钮点击没有起任何作用。

解决方案: 把click事件更换成ontouchstart 可以解决这个问题。 ontouchstart 事件优于click事件触发

       或者 滚动到指定位置,但是每个手机的小键盘高度不一定,所以 滚动的数值 无法确定,所以也比较鸡肋

 

在查找解决方法的过程中,看到了一些博客 关于ios的坑

放在这里 方便以后查询

 

转载于:https://www.cnblogs.com/GoTing/p/10907185.html

你可能感兴趣的文章
Scala之数组
查看>>
Linux入门教程:Apache服务配置(一)
查看>>
Connection to https://dl-ssl.google.com refused
查看>>
MySQL 信息函数 SQL_CALC_FOUND_ROWS
查看>>
词库不如搜狗???搜狗常用词库导入到Google,让它完胜搜狗吧!
查看>>
关于cometd的一些经验总结-js端
查看>>
.gitignore文件使用说明
查看>>
timeago.js自动将时间戳
查看>>
【Android笔记】ContextMenu上下文菜单
查看>>
Java ArrayList、Vector和LinkedList等的差别与用法
查看>>
算法优劣的评定标准(时间复杂度)
查看>>
django 用户注册
查看>>
IOS修改UiTextField的PlaceHolder
查看>>
一次线上GC故障解决过程记录
查看>>
业务系统压测实践建议
查看>>
nodejs npm国内镜像
查看>>
旁路劫持原理与实现
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>
mysql服务器的主从配置
查看>>
巧用AJAX技术,通过updatePanel控件实现局部刷新
查看>>