输入法遮盖

学无止境✅  2016-3-16
0


  您好,出现这个问题的原因有2点:


        原因1:通过调用的openPopover接口打开的窗口的高度是定值(即具体的数值)。即使是通过以下这种方式:var s=window.getComputedStyle($$(id),null);

int(s.height)也是一个固定的值,因此会导致该问题。

        原因2:应用被设置了全屏,因为全屏和压缩模式不兼容,即全屏下输入法会覆盖输入框。                                                             


        解决方法:


        方法1:调用openPopover接口时,原本的int(s.height)参数换成空。若出现打开的窗口覆盖footer内容时,在调用openPopover接口增加第11个参数,该参数传入打开的窗口离屏幕底部的距离,即footer的高度$$(""footer"").offsetHeight。

方法2:打包时选择压缩模式。

回复 1   只看赞同
学无止境✅   2016-3-17
1 楼 0

点击输入框,弹出的软键盘有时后盖住文本框,不能看见输入的对不对,利用在线打包的压缩模式有时候对某些型号手机是不好用的,所以利用js实现这一效果。我的例子是这样的,有一个主窗口,和两个浮动窗口,文本框在浮动窗口上。
1、主窗口 的body


其中header,content是两个浮动窗口。

2、我们先对文本框的onclick事件进行重写(onclick='yidong()'),代码如下
function yidong(){
var offsetobj = $("#ynsk").offset();//ynsk是文本框的id
var top = offsetobj.top;
localStorage.top = top;
uexWindow.evaluateScript('countapplywindow', '0', 'pingyi()'); //countapplywindow主窗口名称,pingyi()主窗口的函数
}
// pingyi()是主窗口的函数
function pingyi(){
var h = screen.height;
var y = localStorage.top-(h/2);
var z = int($$("header").offsetHeight)+y;
if (z > 0) {
localStorage.yidong = 1;//设置的判断浮动窗口的位置的变量,0是在底部,1是移动到了上边
uexWindow.setPopoverFrame('content', 0, -z - 20, '', '');//进行移动
uexWindow.insertPopoverAbovePopover('header', 'content'); //将content浮动窗口插到header底下
}
}


上面代码就可以达到当点击文本框时,文本框向上移动,我这里写的是移动到屏幕中间(主要是不会获得软键盘的高度,只能这样了)。
接下来是如何在软键盘隐藏时,还原到原来位置
3、用window.onorientationchange = window.onresize来检测页面发生变化(页面上下移动,软键盘的弹出和收回),一般是页面上来,和软键盘弹出是两次,下面的i就是过滤掉第一次。(下面两个函数都是主页面的)
window.onorientationchange = window.onresize = function(){
if (localStorage.i == 1) {
backpage();//回到原来位置
}else if (localStorage.yidong == 1) {
localStorage.i = 1;
}
}
function backpage(){
localStorage.yidong = 0;
localStorage.i = 0;
uexWindow.setPopoverFrame('content',0,$$("header").offsetHeight, '', '');
}

ok了
游客  现在