Twitter Appと同様に、UITableViewをスクロールアップするように、UITabBarItemのダブルタップを実装するにはどうすればよいですか?それとも、このための任意の参照は、UITabBarItemをダブルタップしてスクロールアップし、Twitter Appのようにリロードする
おかげ
Twitter Appと同様に、UITableViewをスクロールアップするように、UITabBarItemのダブルタップを実装するにはどうすればよいですか?それとも、このための任意の参照は、UITabBarItemをダブルタップしてスクロールアップし、Twitter Appのようにリロードする
おかげ
あなたは最後のタッチ日時を追跡し、現在のタッチの日付に比較することができますを行います。 差が十分に小さい場合(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;
}
あなたはタブバー上でタップジェスチャーを追加することができます。ユーザーをダブルタップした場合
-(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
}
}
をあなたはQMUI iOSにUITabBarItem (QMUI)のコードを見ることができ、それはブロックを使用してサポートしUITabBarItem
、とのことができますそれのサンプルコードはhereです。
tabBarItem.qmui_doubleTapBlock = ^(UITabBarItem *tabBarItem, NSInteger index) {
// do something you want...
};
これはお勧めですか? – bluezald