2011-04-05 60 views
0

我有一个关于如何添加一个点击手势到UITabBarController的问题。由于UITabBarController内置了轻敲手势(响应标签栏上标签栏项的轻击),而从技术上讲,我可以将自己的手势添加到tabBarController,TabBar会丢失自己的原生轻击手势。下面是我想做的事:添加点击手势到一个tabBarController

UIViewController *VC1 = ....; 
UIViewController *VC2 = ....; 

UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
tabBarController.viewControllers = [NSArray arrayWithObjects: VC1, VC2, nil]; 
UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] 
              initWithTarget:VC1 
                 action:@selector(tap:)]; 




[tabBarController.view addGestureRecognizer:tapGR]; 

这正确响应敲击法“龙头”,但tabBarController失去了它的原生攻丝反应到水龙头物品栏。我试图将手势添加到视图控制器之一的tabBarController这样的:

[VC1.view addGestureRecognizer:tapGR]; 

但当时做这种方式的触击手势完全不认识,虽然使用TabBar的敲击上的本地龙头识别标签栏项目被保留。

有没有人对如何解决这类问题有任何建议?我想一种方法是选择另一种手势,而不是点击使用tabBarController,但我真的宁愿不这样做......

非常感谢您的查看!

回答

1

我不得不想知道你正在用什么手段来处理已经处理水龙头的控件。请考虑你所做的是否会混淆你的用户。

但是,如果您必须尝试在手势识别器上将cancelsTouchesInView设置为NO。除了由识别器处理之外,应该允许将触摸传递给视图。

+0

非常感谢!这解决了我的问题。标签栏控制器的原生轻击手势仅处理标签栏上的轻敲事件,但添加另一个轻击手势可让我使整个屏幕响应另一个轻敲事件。 – JusmanX 2011-04-05 23:06:44