【问题标题】:adding tap gesture to a tabBarController将点击手势添加到 tabBarController
【发布时间】:2011-04-05 17:31:11
【问题描述】:

我有一个关于如何向 UITabBarController 添加点击手势的问题。由于 UITabBarController 已经内置了点击手势(响应对标签栏上的标签栏项目的点击),虽然从技术上讲,我可以将自己的手势添加到 tabBarController,但 tabBar 失去了自己的原生点击手势。以下是我正在尝试做的事情:

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];

这正确响应了点击方法“tap:”,但 tabBarController 失去了对点击栏项目的原生点击响应。我尝试将手势添加到 tabBarController 中的视图控制器之一,如下所示:

[VC1.view addGestureRecognizer:tapGR];

但是这样一来,点击手势根本无法识别,尽管 tabBar 对标签栏项目的点击的原生点击识别被保留了。

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

非常感谢观看!

【问题讨论】:

    标签: uigesturerecognizer tap tabbarcontroller


    【解决方案1】:

    我想知道你到底想对已经处理水龙头的控件进行水龙头做什么。请考虑您所做的事情是否会让您的用户感到困惑。

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

    【讨论】:

    • 非常感谢!这解决了我的问题。标签栏控制器的原生点击手势只处理标签栏上的点击事件,但添加另一个点击手势可以让整个屏幕响应另一个点击事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多