Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIGestureRecognitors干扰UIToolbar?_Ios_Open Source - Fatal编程技术网

Ios UIGestureRecognitors干扰UIToolbar?

Ios UIGestureRecognitors干扰UIToolbar?,ios,open-source,Ios,Open Source,我正在开发一个开源杂志引擎,您可以在GitHub上查看: 我在一个名为MenuPanel的UIView中设置了一个UIToolbar。出于某种原因,UIToolbar中的UIBarButtonims没有正确调用其操作。以下是我用于按钮的语法: UIBarButtonItem *homeItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"home.png"] style:UIBarButtonItemStyleP

我正在开发一个开源杂志引擎,您可以在GitHub上查看:

我在一个名为MenuPanel的UIView中设置了一个UIToolbar。出于某种原因,UIToolbar中的UIBarButtonims没有正确调用其操作。以下是我用于按钮的语法:

UIBarButtonItem *homeItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"home.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonClicked:)];
发生的情况是,无论我在屏幕上单击什么位置,都会调用主UIViewController中声明的UIAPTgestureRecognitor。这将在我的主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];
}
我确信我在做这件事的时候,在概念上犯了一些相当基本的错误。有人能告诉我如何解决这个问题吗

作为参考,您可以在此处查看我的主DefragViewController:UIViewController:

我的菜单面板:UIView在此:


gist.github.com/1431728我解决了自己的问题

我必须告诉我的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;
}

欢迎来到堆栈溢出!确保并将你的答案标记为已接受,以便其他人知道有解决方案。