Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 47630|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-10 14:42:05 | 显示全部楼层 |阅读模式

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

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

    我的代码如下:

    directive:

    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:

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

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

     

    寻找解决方案

    然后我开始了google、baidu的历程,在知识的海洋里翱翔,看到很多奇怪的现象,而且也并没有解决我的问题。

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

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

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

    但是可能在普通的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的学习笔记,有兴趣的一起讨论哦!

     

     

     

     

     

      

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-15 02:29 , Processed in 0.061597 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表