UIGestureRecognizers干扰UIToolbar?

Ste*_*ren 3 open-source ios

我正在开发一个OpenSource Magazine Engine,您可以在GitHub上查看:

https://github.com/interactivenyc/Defrag

我在UIView中设置了一个名为MenuPanel的UIToolbar.由于某种原因,UIToolbar中的UIBarButtonItems没有正确调用它们的动作.这是我用于按钮的语法:

UIBarButtonItem *homeItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"home.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonClicked:)];
Run Code Online (Sandbox Code Playgroud)

什么发生的是,无论我点击我的屏幕上,在UITapGestureRecognizer在我的主要UIViewController中宣告被调用来代替.这可以在我的主UIViewController中的这段代码中进行设置:

- (void)setupGestureRecognizers {

//NSLog(@"setupGestureRecognizer NEW");

UISwipeGestureRecognizer *swipeRecognizer;

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionUp;
[self.view addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionDown;
[self.view addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];

UITapGestureRecognizer *tapRecognizer;

tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.view addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
}
Run Code Online (Sandbox Code Playgroud)

我确信我在尝试这样做时有一些非常基本的概念错误.有人能告诉我如何解决这个问题吗?

作为参考,你可以在这里看到我的主DefragViewController:UIViewController:

https://gist.github.com/1431722

我的MenuPanel:UIView在这里:

gist.github.com/1431728

Ste*_*ren 5

我解决了自己的问题.

我不得不告诉我的UIViewController忽略来自任何UIToolbar的触摸,如下所示:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{

    //ignore any touches from a UIToolbar

    if ([touch.view.superview isKindOfClass:[UIToolbar class]]) {
        return NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)