博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决Titanium Tab组件click事件在iOS中不生效的方案
阅读量:7145 次
发布时间:2019-06-29

本文共 2881 字,大约阅读时间需要 9 分钟。

问题: 以下代码,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://www.cnblogs.com/xmlspy/archive/2013/03/31/2991240.html

你可能感兴趣的文章
备忘-Sql server Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置...
查看>>
java es 骤合操作
查看>>
迭代器 Iterator
查看>>
Android-studio 连接真机 调试weex项目
查看>>
container_of()宏
查看>>
Blossoms
查看>>
LeetCode – Refresh – Fraction to Recurring Decimal
查看>>
Spring Boot 配置优先级顺序
查看>>
buildroot管理uboot+kernel+rootfs
查看>>
用P3P header解决IE下iframe跨域访问时候session丢失的问题
查看>>
Ant入门
查看>>
linux学习shell
查看>>
20180925-2 功能测试
查看>>
正则表达式常用的验证方法
查看>>
mac crontab调用python时出现ImportError: No module named XXX的问题
查看>>
linux之间进程通信
查看>>
CSS 面试题
查看>>
小程序--wepy省市区三级联动选择
查看>>
数据结构--算数表达式求值
查看>>
MySql数据库迁移图文展示
查看>>