在iOS5上使用Custom UITabBarController进行奇怪的操作

时间:2011-10-14 12:50:17

标签: iphone xcode uitableview uitabbarcontroller uigesturerecognizer

我是iOS编程的新手。在制作自定义UITabbarController时,我遇到了iOS4和iOS5之间奇怪的动作差异。如果有人有解决这个问题的想法,请告诉我错过的地方。

我想要的是这个。

  • UITableView / UITabBarController
  • 即使滚动,单击也可以切换标签栏。
  • 双击(以及更多)应该可识别。

UITabBarController + UITapGestureRecognizer + UITableView与双击事件一起使用。

让我疯狂的是这个。

用于切换点按项目的非常简单的单击事件,在UITableView滚动时点击时,不会被称为相反,滚动完成后,点击更改。

我是这样做的。

我希望UITabBar识别双标签。双击时,将UITableView滚动到顶部。所以我用Tab bar补充做了一个项目。

  • DoubleTapBarController(Custom UITabBarController)
    • Tab Bar(UITabBar)
    • 第一个VC(自定义UIViewController)
      • 默认UITabBarItem
    • 第二个VC(自定义和默认空白UIViewController)
      • 默认UITabBarItem

在First View / VC

  • 使用* table Outlet-ed。
  • 添加的普通表视图
  • 当DoubleTabBarController发送消息时,自定义方法'doubleTapped'用于进程双击事件。

在DoubleTabBarController

  • 使用协议继承UITabBarController
  • 在viewDidLoad事件中使用UITapGestureRecognizer设置手势(单击,双击)
  • tap1,tap2,tap3,tap4进行点击操作。

我尝试过(并失败了)。

  • 在单击/双击之间注释requireGestureRecognizerToFail。没用。
  • 评论整个双击识别器。它在滚动时有效。但是没有双击事件。
  • 滚动时双击其他选项卡。它会在滚动时发送单击事件。但它也不是解决方案。
  • (因为我怀疑设置手势是否会产生焦点问题 - 双击工作时间!)评论双击并用三击更换它。在正确的时间发送三次点击事件。但默认单击事件在正确的时间无法正常工作 - 例如添加双击手势。

我的代码。

DoubleTabBarController.h

#import <UIKit/UIKit.h>
@interface DoubleTabBarController : UITabBarController <UITabBarDelegate>
- (id)init;
@end

DoubleTabBarController.m (部分)

- (void)viewDidLoad {
    [super viewDidLoad];

    UITapGestureRecognizer *singleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap1)] autorelease];
    singleTap.numberOfTapsRequired = 1;
    singleTap.numberOfTouchesRequired = 1;
    singleTap.cancelsTouchesInView = NO;

    UITapGestureRecognizer *doubleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap2)] autorelease];
    doubleTap.numberOfTapsRequired = 2;
    doubleTap.numberOfTouchesRequired = 1;
    doubleTap.cancelsTouchesInView = NO;
    [singleTap requireGestureRecognizerToFail:doubleTap];
    [[self tabBar] addGestureRecognizer:singleTap];
    [[self tabBar] addGestureRecognizer:doubleTap];
}

当前状态

我失去了解决这个问题的方向。请帮帮我:)。

PS。我在iOS 4.3上遇到了同样的问题,但解决了删除UITabBarControllerDelegate协议的问题。它再次出现在iOS 5.0上:(

0 个答案:

没有答案