解决ionic在ios没法使用focus,ios focus失效的问题

最近也偷懒,好久没有写博客了。今天在项目中遇到了这个奇葩的问题,基于ionic的ios的hybird APP 没法使用focus()获取焦点和键盘的问题。javascript

问题:基于ionic的ios的hybird APP 没法使用focus()获取焦点和键盘的问题。

个人代码以下:html

directive:html5

1 .directive('focusMe', function($timeout) {
2     return {
3         link: function(scope, element) {
4             $timeout(function() {
5                 element[0].focus();
6             },300);
7         }
8     };
9 })

html:java

1 <input focus-me type="search"   placeholder="搜索">

这么一段简单的代码,在chrome上面调试是正常的,然而在ios就是怎么也出不来。android

 

寻找解决方案

而后我开始了google、baidu的历程,在知识的海洋里翱翔,看到不少奇怪的现象,并且也并无解决个人问题。ios

好像在 http://twilight.btlogs.com/how-to-focus-html-input-element-with-javascript-on-ios-and-android-mobile-safari/es6

这里面主要说的是,只有在监听了用户触发的时间的函数中执行focus才有用,具体能够点进去看一下。chrome

我尝试了一下,发现这个对于hybird App也是没有任何效果。ionic

可是可能在普通的ios,html5页面会生效的,这个我没有尝试,也请尝试过得朋友告诉一下我。函数

我写的相似于这样,如下也符合他们说的:

 1 .directive('focusMe', function($timeout) {
 2     return {
 3         link: function(scope, element) {
 4             element[0].on('click',function(){
 5                 element[0].focus();    
 6             })
 7             $timeout(function() {
 8                 element[0].trigger('click');
 9             },300);
10             
11         }
12     };
13 })

 

解决方案

原来,在App的配置文件(config.xml),里面默认会有一句

1 <preference name="KeyboardDisplayRequiresUserAction" value="true" />

这里面的大概意思就是,键盘的显示须要用户去触发,并且是设置为true的!!!

那么下面大家知道怎么作了吧,只须要把value的值改成false,一切都解决了。

1 1 <preference name="KeyboardDisplayRequiresUserAction" value="false" />

 

 

最近在学历es6语法,以后可能会更新es6的学习笔记,有兴趣的一块儿讨论哦!

相关文章
相关标签/搜索