处理UITabBarController双击事件

作者: _Thinking_ | 来源:发表于2016-03-19 12:15 被阅读1034次

因业务功能的需要,要处理UITabBarController的某个item的双击事件。 查看了一下UITabBarController的属性和方法,发现并没有提供类似的功能,于是动手写一个。

实现思路

  1. 给TabBarItem添加手势
    但后来发现UITabBarItem 只是一个NSObject ,是不可以添加手势的,只有UITabBar可以。

  2. 给UITabBar添加手势
    双击后是可以收到事件,但要计算点击的点的位置是不是在当前选中的Item上,感觉有点麻烦,

  3. 通过UITabBarControllerDelegate 根据时间间隔处理

第3种方法实现起来比较简单,而且也达到效果,下面看看代码

- (BOOL)checkIsDoubleClick:(UIViewController *)viewController
{
    static UIViewController *lastViewController = nil;
    static NSTimeInterval lastClickTime = 0;
    
    if (lastViewController != viewController) {
        lastViewController = viewController;
        lastClickTime = [NSDate timeIntervalSinceReferenceDate];
        
        return NO;
    }
    
    NSTimeInterval clickTime = [NSDate timeIntervalSinceReferenceDate];
    if (clickTime - lastClickTime > 0.5 ) {
        lastClickTime = clickTime;
        return NO;
    }
    
    lastClickTime = clickTime;
    return YES;
}

然后再看看UITabBarControllerDelegate的响应

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController  
{  
    if ([self checkIsDoubleClick:viewController]) {  
        [[NSNotificationCenter defaultCenter] postNotificationName:kDoubleClickTabItemNotification object:nil];  
    }  
    return YES;  
}

需要处理的页面监听一下通知,然后简单判断一下 UITabBarController.selectedIndex 就可以了。

相关文章

  • 处理UITabBarController双击事件

    因业务功能的需要,要处理UITabBarController的某个item的双击事件。 查看了一下UITabBar...

  • javascript笔记10

    事件处理程序 焦点事件 鼠标事件-单击与双击 鼠标事件-mouserover/mouserout/mousedow...

  • 解析Flutter中的手势控制Gestures

      Flutter提供了很多处理触摸事件的控件,例如InkWell和InkResponse可以处理点击、双击、长按...

  • Lesson10 双击事件和键盘检测

    双击事件(这个地方,泛型的知识需要再巩固下) 键盘按键事件 事件类型是直接调用的事件处理程序是需要new的

  • 双击事件

    有些时候我们会遇到双击事件,如何设置双击事件。 在你的点击事件里写下一下判断 System.arraycopy(d...

  • 双击事件

    一、原理 1、布尔值 2、setTimeout() 二、实现代码 html: css: JavaScript: 三...

  • Android双击事件实现

    双击退出应用 双击响应事件 利用Handler控制点击事件

  • android_自定义多击事件

    自定义双击事件 点击事件:在控件上按下,离开,有瞬间的停留。 双击事件:在单位时间内,双击。 多击事件:在单位时间...

  • Android手势检测GestureDetector的使用说明

    在Android事件处理中单击,双击,长按,滑动都是很常用的手势操作。GestureDetector对这些操作进行...

  • 常用事件

    鼠标事件 onclick 点击事件点击鼠标左键触发 ondblclick双击事件双击鼠标左键触发 onmouseo...

网友评论

本文标题:处理UITabBarController双击事件

本文链接:https://www.haomeiwen.com/subject/poehlttx.html