为什么这是一个无限循环?

时间:2013-02-09 00:22:25

标签: iphone ios ipad uigesturerecognizer infinite-loop

我在UIView的子视图中遇到手势识别问题。我的子视图是一个可以通过UIPanGestureRecognizer拖动的视图 - 我知道该部分有效。但我遇到了一个问题首先触及该视图。接触到了我的UIView - 而不是我希望他们去的子视图。我尝试使用以下代码强制将触摸重定向到目标视图:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"rT");
    [self.valueLabel touchesBegan:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"mT");
    [self.valueLabel touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"eT");
    [self.valueLabel touchesEnded:touches withEvent:event];
}

...但是我的控制台变得疯狂 - 无限循环

...
2013-02-08 17:07:33.683 Totalizer[3810:907] rT
2013-02-08 17:07:33.684 Totalizer[3810:907] rT
2013-02-08 17:07:33.685 Totalizer[3810:907] rT
2013-02-08 17:07:33.686 Totalizer[3810:907] rT
2013-02-08 17:07:33.686 Totalizer[3810:907] rT
2013-02-08 17:07:33.687 Totalizer[3810:907] rT
2013-02-08 17:07:33.688 Totalizer[3810:907] rT
2013-02-08 17:07:33.689 Totalizer[3810:907] rT
2013-02-08 17:07:33.690 Totalizer[3810:907] rT
2013-02-08 17:07:33.691 Totalizer[3810:907] rT
2013-02-08 17:07:33.692 Totalizer[3810:907] rT
2013-02-08 17:07:33.692 Totalizer[3810:907] rT
2013-02-08 17:07:33.693 Totalizer[3810:907] rT
2013-02-08 17:07:33.694 Totalizer[3810:907] rT
2013-02-08 17:07:33.695 Totalizer[3810:907] rT
2013-02-08 17:07:33.696 Totalizer[3810:907] rT
2013-02-08 17:07:33.697 Totalizer[3810:907] rT
2013-02-08 17:07:33.698 Totalizer[3810:907] rT
2013-02-08 17:07:33.700 Totalizer[3810:907] rT
2013-02-08 17:07:33.701 Totalizer[3810:907] rT
2013-02-08 17:07:33.702 Totalizer[3810:907] rT
2013-02-08 17:07:33.703 Totalizer[3810:907] rT
2013-02-08 17:07:33.704 Totalizer[3810:907] rT
2013-02-08 17:07:33.705 Totalizer[3810:907] rT
2013-02-08 17:07:33.706 Totalizer[3810:907] rT
2013-02-08 17:07:33.707 Totalizer[3810:907] rT
2013-02-08 17:07:33.708 Totalizer[3810:907] rT
2013-02-08 17:07:33.709 Totalizer[3810:907] rT
2013-02-08 17:07:33.710 Totalizer[3810:907] rT
2013-02-08 17:07:33.711 Totalizer[3810:907] rT
2013-02-08 17:07:33.713 Totalizer[3810:907] rT
...

我似乎无法弄清楚这一点。

任何事情都有帮助(理性......)

Erway Software

2 个答案:

答案 0 :(得分:1)

您发布的代码进入循环,因为

valueLabel未对touchesBegan:touchesMoved:touchesEnded:做出回应...... 这会将涓流回复到您的代码。

这是一个无意的递归循环。

绝对放弃这种方法。你试过valueLabel.userInteractionEnabled = YES吗?

答案 1 :(得分:1)

您的触摸正被转发给self.label的超级视图,这是自我。这导致无限递归。