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 }

 

posted @ 2016-11-08 11:13  小C酱  阅读(3031)  评论(0编辑  收藏  举报