chender
chender
  • 发布:2015-07-03 11:29
  • 更新:2018-05-25 12:02
  • 阅读:3194

关于手势密码有时候不显示的问题

分类:MUI

在某部测试机(vivo x5S L)上发现有时候手势密码控件不显示出来,需要点击locker对应的区域才能显示出来

2015-07-03 11:29 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

初始化locker之后,试试加上以下代码

canvas.style.display = 'none'; // Detach from DOM  
            canvas.offsetHeight; // Force the detach  
            canvas.style.display = 'inherit'; // Reattach to DOM
  • chender (作者)

    加上了,还是会出现那种现象

    2015-07-06 09:47

  • chender (作者)

    应该不是canvas的问题,canvas是有显示出来的(我加了个背景色),但是里面那九个圆没有显示出来

    2015-07-06 09:51

chender

chender (作者) - 与人为善


有时候会像这样,只出来一个圆圈

chender

chender (作者) - 与人为善

locker初始化后调用一下clear方法就好了(如下图)
但是我不太想改mui.locker的源码
有办法在我自己的代码里调到clear这个方法么。。。。

kika

kika

刚也遇到这个问题。

可以有两种解决方案。

  1. 显示调用,延迟渲染。

    setTimeout(function(){  
        mui('.mui-locker').locker();  
    },800);  

    缺点是延迟时间比较大,因为不同的终端性能不一样,延迟时间不好设置。

  2. 不使用 mui-locker 这个class,单独设置一个class,显示调用。如

    mui('.gesture-locker').locker();  

mui.locker.js中有自动渲染,是基于 mui-locker 的,如下

    //自动处理 class='mui-locker' 的 dom  
    try {  
        $('.'   lockerClassName).locker();  
    } catch (ex) {}  
    $.ready(function() {  
        $('.'   lockerClassName).locker();  
    });

这个事件监听有问题。

因为$.ready并不是 canvas 父级,所以canvas绘制后没有渲染成功。

c***@qq.com

c***@qq.com

mui.locker.js 文件中给self.draw(cxt, self.pointLocationArr, [], null)函数增加一个延迟就好

该问题目前已经被锁定, 无法添加新回复