美文网首页
微信小程序--隐藏原生控件导致焦点异常的问题

微信小程序--隐藏原生控件导致焦点异常的问题

作者: kenny_bai | 来源:发表于2018-09-07 15:48 被阅读0次

    界面ui:

    需求,输入姓名时,需要做一个模糊匹配的界面。比如用户输入姓名:白。本地有一个保存的历史记录,用来保存玩家的信息。例如:‘白1,白2,白3,白4’。。。这个时候会将相似的名字罗列出来,显示在下拉列表下上。类似百度搜索下拉列表。ui上正确的显示方式。下拉列表,应该显示在最上层。

    但是遇到一个bug,最下方的textarea中默认文本“请粘贴联系人信息...”显示在下拉列表上。这个显示上的bug,在微信文档上得到了解释。

    https://developers.weixin.qq.com/miniprogram/dev/component/native-component.html

    大概的意思就是,textarea属于原生组件。显示在所有视图层之上,即使你改变其他view的z-index也无济于事。

    于是想到一个解决方案:当下拉列表显示时,关闭textarea的显示。这里使用的是hidden。上面的第一个bug得以解决。

    但是由这个hidden导致了下面的bug。

    用户输入姓名时,出现下拉模糊匹配列表时,这个时候虚拟键盘关闭。但是焦点还在姓名输入框内。导致如果不主动切换到其它输入框获取焦点。就无法调起虚拟键盘。正确的显示逻辑是:

    方案1:弹出下拉模糊匹配列表时。虚拟键盘不消失,焦点仍处于姓名输入框内。

    这种显示逻辑是可以接受,但是现在的情况是,虚拟键盘关闭,焦点还在。很尴尬。。。

    最后发现:是因为显示下拉列表时,使用hidden关闭textarea文本框导致输入焦点异常。尝试wx:if也是不行的。wx:if条件渲染和hidden基本上是类似的。最后是使用display的方式。完美解决该问题,显示成第二种方案。

    总结:这两个问题都是原生组件导致的,一方面对它不甚了解,第二方面其本身就是兼容上有部分问题。对原生组件的使用要严格按照官方文档。不然有可能出现意想不到的问题。

    相关文章

      网友评论

          本文标题:微信小程序--隐藏原生控件导致焦点异常的问题

          本文链接:https://www.haomeiwen.com/subject/ippcgftx.html