我对手势识别器响应不正确的子视图有问题,这有什么用?

| 我有一个名为ImageViewController的父视图。在此视图中,我最多添加两个名为ImageDetailViewController的子视图。在此详细视图控制器中,我声明了一些仅需要在各自的视图上执行某些操作的手势。这是代码:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeModeButtonPushed:)];
[tap setNumberOfTapsRequired:2];
[tap setNumberOfTouchesRequired:1];
[tap setDelegate:self];
[openGLView addGestureRecognizer:tap];
[tap release];

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(touchDidDrag:)];
[panRecognizer setMaximumNumberOfTouches:1];
[openGLView addGestureRecognizer:panRecognizer];
[panRecognizer release];

UIPanGestureRecognizer *shiftRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(shiftView:)];
[shiftRecognizer setMinimumNumberOfTouches:2];
[openGLView addGestureRecognizer:shiftRecognizer];
[shiftRecognizer release];

UIPinchGestureRecognizer *pinchRecog = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(viewPinched:)];
[openGLView addGestureRecognizer:pinchRecog];
[pinchRecog release];
因此,我需要在父视图中将两个详细视图彼此相邻加载,然后我需要能够在一个视图或另一个视图上执行这些手势,并使该视图响应。 问题是,当我用一根手指在一根手指上摇动时,有时会在应有的视图上调用,但最常见的是,它会在另一视图上触发!这没有任何意义!我已经尝试了调试以及我能想到的所有其他内容,但是我看不到如何将两个单独声明的对象像这样混在一起。 使事情变得奇怪的是,有些手势可以正常工作。因此,仅此一个手指平移手势即可将所有内容弄乱。 我可能会缺少什么?我该如何调试呢?一切看起来好像这些对象确实是分离的,但是它们的行为方式不一样……     
已邀请:
您可以通过找出手势识别器正在调用的视图来调试/解决此问题:查看以下代码: (void)NAMEOFFUNCTION:(UITapGestureRecognizer *)recognizer {
if ([yourViewController.view pointInside:[recognizer locationInView:presentationSlideViewController.view] withEvent:nil]) {


}
筛选所有子视图,在此示例中,我正在检查手指触摸是否在定义的x坐标和y坐标以下。首先检查该点是否在_buttonVIew子视图://内
if ([_buttonView pointInside:[recognizer locationInView:_buttonView] withEvent:nil]) {
然后检查触摸是否在低于50的坐标上
    if (([recognizer locationInView:_buttonView].x < 50) && ([_leftArrow isEnabled])) {
        pageIndex -= 1;
    }
   //otheriwse check to see if its over 970
        else if (([recognizer locationInView:_buttonView].x > 970) && ([_rightArrow isEnabled])) {
            pageIndex += 1;
        }

    [self scrollViewScrollToRect:pageIndex];
    [self fadeArrows:1.0];
    return;

    }
}     

要回复问题请先登录注册