Come implementare un doppio tocco su UITabBarItem in modo che scorra l'UITableView, come fa l'app di Twitter? O qualsiasi riferimento per questo, faràTocca due volte su UITabBarItem per scorrere verso l'alto e ricarica come l'app Twitter
Grazie
Come implementare un doppio tocco su UITabBarItem in modo che scorra l'UITableView, come fa l'app di Twitter? O qualsiasi riferimento per questo, faràTocca due volte su UITabBarItem per scorrere verso l'alto e ricarica come l'app Twitter
Grazie
è possibile tenere traccia della data ultima tocco e confrontare alla data tocco corrente. Se la differenza è abbastanza piccola (0,7 sec), puoi considerare un doppio tocco.
Implementare questo in una sottoclasse di UITabVarController
utilizzando un metodo delegato shouldSelectViewController
.
Ecco un codice funzionante che sto utilizzando.
#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;
}
È possibile aggiungere un gesto tap sulla barra delle linguette:
-(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
}
}
si può vedere il codice di UITabBarItem (QMUI) in QMUI iOS, supporta all'utilizzo di un blocco se l'utente doppio tap del UITabBarItem
, e si può trovare un codice di esempio per questo here.
tabBarItem.qmui_doubleTapBlock = ^(UITabBarItem *tabBarItem, NSInteger index) {
// do something you want...
};
è uno scoraggiato? – bluezald