2019独角兽企业重金招聘Python工程师标准>>>

问题: 以下代码,tab1的click事件在Android中生效,在iOS不生效

   1:  function ApplicationTabGroup(Window) {
   2:      //create module instance
   3:      var self = Ti.UI.createTabGroup();
   4:   
   5:      //create app tabs
   6:      var win1 = new Window(L('home')), win2 = new Window(L('settings'));
   7:   
   8:      var tab1 = Ti.UI.createTab({
   9:          title : L('home'),
  10:          icon : '/images/KS_nav_ui.png',
  11:          window : win1
  12:      });
  13:      win1.containingTab = tab1;
  14:   
  15:      var tab2 = Ti.UI.createTab({
  16:          title : L('settings'),
  17:          icon : '/images/KS_nav_views.png',
  18:          window : win2
  19:      });
  20:      win2.containingTab = tab2;
  21:   
  22:      self.addTab(tab1);
  23:      self.addTab(tab2);
  24:   
  25:      tab1.addEventListener('click',function(){
  26:          //这个事件在iOS中不会被触发
  27:      });
  28:   
  29:      return self;
  30:  };
  31:   
  32:  module.exports = ApplicationTabGroup;

解决方案:

通过看Titanium附带的示例程序 Kitcken Sink , 找到了解决方案.

为TabGroup添加focus事件,然后对事件参数进行判断,来确定当前被点击的是那个tab.

   1:  function ApplicationTabGroup(Window) {
   2:      //create module instance
   3:      var self = Ti.UI.createTabGroup();
   4:   
   5:      //create app tabs
   6:      var win1 = new Window(L('home')), win2 = new Window(L('settings'));
   7:   
   8:      var tab1 = Ti.UI.createTab({
   9:          title : L('home'),
  10:          icon : '/images/KS_nav_ui.png',
  11:          window : win1
  12:      });
  13:      win1.containingTab = tab1;
  14:   
  15:      var tab2 = Ti.UI.createTab({
  16:          title : L('settings'),
  17:          icon : '/images/KS_nav_views.png',
  18:          window : win2
  19:      });
  20:      win2.containingTab = tab2;
  21:   
  22:      self.addTab(tab1);
  23:      self.addTab(tab2);
  24:   
  25:      self.addEventListener('focus', function(e) {
  26:   
  27:          var info = Titanium.API.info;
  28:   
  29:          // 在iOS中, e.source 是 TabGroup对象,
  30:          // 在Android中,e.source 是 Tab对象
  31:          var src = e.source;
  32:          var tab = e.tab;
  33:          var preTab = e.previousIndex;
  34:   
  35:          // e.tab 是当前获得焦点的tab
  36:          // e.index 当前获得焦点的tab的索引,首次为-1
  37:          // e.previousTab 上个tab
  38:          // e.previousIndex 上个tab的索引,首次为null
  39:   
  40:          // On iOS, the "More..." tab is actually a tab container, not a tab. When it is clicked, e.tab is undefined.
  41:          if (!tab) {
  42:              info('在iOS中点击了"More..."');
  43:              return;
  44:          }
  45:   
  46:          // 首次
  47:          if (!preTab) {
  48:              info('首次进入');
  49:              return;
  50:          }
  51:   
  52:          if (tab === tab1) {
  53:              info('点击了tab1');
  54:          } else if (tab === tab2) {
  55:              info('点击了tab2');
  56:          }
  57:      });
  58:   
  59:      return self;
  60:  };
  61:   
  62:  module.exports = ApplicationTabGroup;

转载于:https://my.oschina.net/xmlspyspring/blog/118768

解决Titanium Tab组件click事件在iOS中不生效的方案相关推荐

  1. vue 移动端点击延迟_vue移动端项目-click事件在浏览器中延迟300ms的解决方法

    在H5页面移动端项目当中,click事件在浏览器中会有300ms的延迟,这个也是移动端开发中常见的问题之一,今天就这个问题说一说解决方法 解决click点击事件300ms延迟-fastClick fa ...

  2. 【踩坑日记】Vue组件@click事件点击没有反应

    项目场景: 在自定义组件上绑定@click事件无法触发 问题描述: 在自定义组件上绑定@click事件无法触发 <template><div>自定义组件<div> ...

  3. android计步器简书,iOS中计步器的实现方案及原理

    前言 当前社会随着社会水平的越来越高,人民饮食也更加的丰富多样,随之而来就成就了越来越多可爱的胖子.胖子多了,一些"不良商贩"发现商机研发出了运动健身类的APP,如:Keep,咕咚 ...

  4. JS解决因循环绑定click事件失效

    很多js新手都会在绑定事件遇到绑定失效的问题. 大致思路就是,比如用一个循环让对应的button按钮绑定对应的事件. 比如这样 <button id="1">1 < ...

  5. box-shadow在ios中不生效

    在电脑端和模拟器上调试都正常显示,安卓机上也正常显示.但是在ios真机上box-shadow的效果就不显示了. 重点在```-webkit-appearance```这个属性,去掉ios默认的输入框自 ...

  6. blur事件与click事件的冲突

    定义: blur事件:当元素失去焦点时发生 blur 事件 click事件:当单击元素时,发生 click 事件 在开发中会发现存在以下场景,点击当前输入框以外的其他元素.此时输入框失焦触发blur事 ...

  7. innerHtml click事件

    Vue innerHtml click事件 vue项目中使用G6作为展示拓扑图的库 在使用tooltip时,想在tooltip中添加点击事件,由于tooltip返回内容使用的是innerHtml,所以 ...

  8. iOS中滤镜处理及相关内存泄漏问题的解决

    iOS中滤镜处理及相关内存泄漏问题的解决 参考文章: (1)iOS中滤镜处理及相关内存泄漏问题的解决 (2)https://www.cnblogs.com/ToBeTheOne/p/5708906.h ...

  9. 0x8007007E 报错解决办法 OPC组件使用记录

    0x8007007E 报错解决办法 OPC组件使用记录 在Win10 中开发OPC客户端过程中,会在读取设备时出现下面组件缺失异常. Message=检索 COM 类工厂中 CLSID 为 {28E6 ...

最新文章

  1. 走火入魔通用权限管理不仅是权限设计更是总体设计规划、快速开发集成平台(集中控制体系)...
  2. EF架构~LinqToEntity里实现left join的一对一与一对多
  3. android 三个点按钮实现_Android 常用侧滑栏实现
  4. Python3 字典 items() 方法
  5. java发送http get请求的两种方式
  6. python md5函数_python实现md5加密
  7. RTT 使用menuconfig 和cubeMux 在移植过来的模板工程上增加一个串口2
  8. 基于Linux CentOS搭建FTP服务
  9. 中国 IT 行业平均工资再次碾压金融业,意味着什么?
  10. 7.卷2(进程间通信)---互斥锁和条件变量
  11. 学习ExtJs教程初级
  12. udp数据包大小问题
  13. Wifi密码破解(rtl8818linux驱动安装)
  14. Mac系统下使用cd命令无法进入目录
  15. 山东理工大学acm非专业程序设计基础答案
  16. ae渲染出现错误是什么问题_ae渲染提示渲染错误,渲染出现偏移解决方案
  17. HPB钱包与中间件接口
  18. 感悟生活,再来聊聊拼多多
  19. BigDecimal如何保留小数位
  20. 新版2022高仿QQ,利用Java swing1:1模仿qq编写的聊天程序

热门文章

  1. Windows下利用TortoiseSVN搭建本地SVN服务器
  2. 手把手教你如何进行FileZilla的安装
  3. Unidirectional Link Detection Protocol
  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(46)-工作流设计-设计分支
  5. 显示一些整数的最大公因子
  6. 实施ERP系统要先进行思考
  7. NameValueCollection详解
  8. 使用DataReader、DataSet、DataAdapter和DataView
  9. 如何部署云服务器,保证应用高可用性,永不停机
  10. 如何编译 Linux 内核