解决Titanium Tab组件click事件在iOS中不生效的方案
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中不生效的方案相关推荐
- vue 移动端点击延迟_vue移动端项目-click事件在浏览器中延迟300ms的解决方法
在H5页面移动端项目当中,click事件在浏览器中会有300ms的延迟,这个也是移动端开发中常见的问题之一,今天就这个问题说一说解决方法 解决click点击事件300ms延迟-fastClick fa ...
- 【踩坑日记】Vue组件@click事件点击没有反应
项目场景: 在自定义组件上绑定@click事件无法触发 问题描述: 在自定义组件上绑定@click事件无法触发 <template><div>自定义组件<div> ...
- android计步器简书,iOS中计步器的实现方案及原理
前言 当前社会随着社会水平的越来越高,人民饮食也更加的丰富多样,随之而来就成就了越来越多可爱的胖子.胖子多了,一些"不良商贩"发现商机研发出了运动健身类的APP,如:Keep,咕咚 ...
- JS解决因循环绑定click事件失效
很多js新手都会在绑定事件遇到绑定失效的问题. 大致思路就是,比如用一个循环让对应的button按钮绑定对应的事件. 比如这样 <button id="1">1 < ...
- box-shadow在ios中不生效
在电脑端和模拟器上调试都正常显示,安卓机上也正常显示.但是在ios真机上box-shadow的效果就不显示了. 重点在```-webkit-appearance```这个属性,去掉ios默认的输入框自 ...
- blur事件与click事件的冲突
定义: blur事件:当元素失去焦点时发生 blur 事件 click事件:当单击元素时,发生 click 事件 在开发中会发现存在以下场景,点击当前输入框以外的其他元素.此时输入框失焦触发blur事 ...
- innerHtml click事件
Vue innerHtml click事件 vue项目中使用G6作为展示拓扑图的库 在使用tooltip时,想在tooltip中添加点击事件,由于tooltip返回内容使用的是innerHtml,所以 ...
- iOS中滤镜处理及相关内存泄漏问题的解决
iOS中滤镜处理及相关内存泄漏问题的解决 参考文章: (1)iOS中滤镜处理及相关内存泄漏问题的解决 (2)https://www.cnblogs.com/ToBeTheOne/p/5708906.h ...
- 0x8007007E 报错解决办法 OPC组件使用记录
0x8007007E 报错解决办法 OPC组件使用记录 在Win10 中开发OPC客户端过程中,会在读取设备时出现下面组件缺失异常. Message=检索 COM 类工厂中 CLSID 为 {28E6 ...
最新文章
- 走火入魔通用权限管理不仅是权限设计更是总体设计规划、快速开发集成平台(集中控制体系)...
- EF架构~LinqToEntity里实现left join的一对一与一对多
- android 三个点按钮实现_Android 常用侧滑栏实现
- Python3 字典 items() 方法
- java发送http get请求的两种方式
- python md5函数_python实现md5加密
- RTT 使用menuconfig 和cubeMux 在移植过来的模板工程上增加一个串口2
- 基于Linux CentOS搭建FTP服务
- 中国 IT 行业平均工资再次碾压金融业,意味着什么?
- 7.卷2(进程间通信)---互斥锁和条件变量
- 学习ExtJs教程初级
- udp数据包大小问题
- Wifi密码破解(rtl8818linux驱动安装)
- Mac系统下使用cd命令无法进入目录
- 山东理工大学acm非专业程序设计基础答案
- ae渲染出现错误是什么问题_ae渲染提示渲染错误,渲染出现偏移解决方案
- HPB钱包与中间件接口
- 感悟生活,再来聊聊拼多多
- BigDecimal如何保留小数位
- 新版2022高仿QQ,利用Java swing1:1模仿qq编写的聊天程序