iOS tabBar双击事件


思路: 在tabBarController的代理方法 shouldSelectViewController 中, 通过判断tabBar选中的控制器是否是当前控制器 并 比对两次点击的时间间隔 来判断是否是双击事件.

 

1. 先定义一个全局变量来记录上次点击的时间

 1 @property (strong, nonatomic) NSDate *lastDate; 

 

2. 实现代理方法中的事件

 1 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
 2     BESTBaseViewController *vc = tabBarController.selectedViewController;
 3     
 4     NSDate *date = [[NSDate alloc] init];
 5     if ([vc isEqual:viewController]) {
 6         // 处理双击事件
 7         if (date.timeIntervalSince1970 - _lastDate.timeIntervalSince1970 < 0.5) {
 8             POST_NOTIFY(NOTIFY_TABBAR_DOUBLE_CLICK, nil, nil)
 9         }
10         _lastDate = date;
11         
12         return NO;
13     }
14     return YES;
15 }

 

注: 在接收并实现通知方法的时候 需要注意过滤掉 三连击或以上的点击事件(可通过一个全局变量进行判断过滤)

1 - (void)notifyTabBarDoubleClick:(NSNotification *)noti {
2     if (self.active) {
3         if (_canDoubleClick) { // 全局变量默认为YES
4             _canDoubleClick = NO;
5             
6             [self queryHomeData];
7         }
8     }
9 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM