Android Weex input 自动获取焦点方法失效

背景

实现一个weex的搜索页面,进入页面需要默认调起键盘

关键代码

代码很简单,但是运行的时候问题就来了,iOS没有问题,进入页面就调起了键盘,但是Android进页面之后没有任何反应
内心OS


image.png

又遇到奇葩问题了

开始排查问题吧
第一步
官网找文档

focus() 0.8+
将 input 组件聚焦。

确认input识有这个方法的,查看demo示例,调用同样没问题,可以获取焦点...




修改demo代码把focus()方法放到mounted里面,方法同样失效了,看来是调用的时机不对

尝试在mounted里面延迟调用,但是还是没有效果

mounted: {
  var self = this
  setTimeout(function() { self.searchInputFocus(); }, 100);  //100ms后将会调用执行searchInputFocus()函数
}

会不会是获取input组件有问题,打印一下看看

searchInputFocus(){
   console.log(this.$refs.searchInput.focus())
   this.$refs.searchInput.focus()
}

log输出没问题,组件信息可以打印出来,但是奇怪的事情发生了,input竟然获取焦点调起了键盘。

调用一次没反应,再调用一次就可以了???

随后在mounted去掉了延迟调用,又失效了。

根据官网介绍mounted难道不是加载完成之后调用的周期方法吗?是我调用的时机不对?

最终没有找到优雅的解决办法,暂时采用延迟调用两次focus()的蠢方案。。。得以解决。

先记录一下这个坑,有时间还需再查询相关资料以及源码看看到底是不是Weex的一个小bug,有待验证。

你可能感兴趣的:(Android Weex input 自动获取焦点方法失效)