2011-10-10 11 views

答えて

1

あなたは最後のタッチ日時を追跡し、現在のタッチの日付に比較することができますを行います。 差が十分に小さい場合(0.7秒)、ダブルタップとみなすことができます。

UITabVarControllerのサブクラスで、デリゲートメソッドshouldSelectViewControllerを使用して実装します。

ここに私が使用している作業用コードがあります。

#import "TabBarController.h" 
#import "TargetVC.h" 

@interface TabBarController() 

@property(nonatomic,retain)NSDate *lastTouchDate; 

@end 

@implementation TabBarController 

//Remeber to setup UINavigationController of each of the tabs so that its restorationIdentifier is not nil 
//You can setup the restoration identifier in the IB in the identity inspector for you UIViewController or your UINavigationController 
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ 
    NSString *tab = viewController.restorationIdentifier; 

    if([tab isEqualToString:@"TargetVC"]){ 

     if(self.lastTouchDate){ 

      UINavigationController *navigationVC = (UINavigationController*)viewController; 
      TargetVC *targetVC = (TargetVC*)navigationVC.viewControllers[0]; 

      NSTimeInterval ti = [[NSDate date] timeIntervalSinceDate:self.lastTouchDate]; 
      if(ti < 0.7f) 
       [targetVC scrollToTop]; 

     } 

     self.lastTouchDate = [NSDate date]; 
    } 

    return YES; 
} 
0

あなたはタブバー上でタップジェスチャーを追加することができます。ユーザーをダブルタップした場合

-(void)addTapGestureOnTabbar 
{ 
    UITapGestureRecognizer *tap =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapTabbarHappend:)]; 
    tap.numberOfTapsRequired = 2; 
    tap.delaysTouchesBegan = NO; 
    tap.delaysTouchesEnded = NO; 
    [_tabBarController.tabBar addGestureRecognizer:tap]; 
} 

-(void)doubleTapTabbarHappend:(UITapGestureRecognizer *)gesture 
{ 
    CGPoint pt = [gesture locationInView:self.tabBarController.tabBar]; 
    NSInteger count = self.tabBarController.tabBar.items.count; 
    CGFloat itemWidth = [UIScreen mainScreen].bounds.size.width/(count*1.0); 
    CGFloat temp = pt.x/itemWidth; 
    int index = floor(temp); 
    if (index == kTabbarItemIndex) { 
     //here to scroll up and reload 
    } 
} 
0

をあなたはQMUI iOSUITabBarItem (QMUI)のコードを見ることができ、それはブロックを使用してサポートしUITabBarItem、とのことができますそれのサンプルコードはhereです。

tabBarItem.qmui_doubleTapBlock = ^(UITabBarItem *tabBarItem, NSInteger index) { 
    // do something you want... 
}; 
関連する問題