iOS 4.2块动画 - >为什么我会收到这些警告: - [UIApplication beginIgnoringInteractionEvents]溢出。忽略

时间:2010-11-03 18:22:23

标签: ios4 uiviewanimation

我有一些摆动UIViews的代码,就像编辑你的iOS主屏幕一样。

我有以下两种方法来实现这种摆动效果:

- (void)wobble {
 int amountInRadians = (self.tag % 2) == 0 ? 2.0 : -2.0;
 containerView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-amountInRadians));

 [UIView animateWithDuration:0.10 
        delay:0.0 
      options:(UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse)
      animations:^ {
       containerView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(amountInRadians));
      }
      completion:NULL
 ];
}

- (void)stopWobble {
 [UIView animateWithDuration:0.01
        delay:0.0 
      options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveLinear)
      animations:^ {
       containerView.transform = CGAffineTransformIdentity;
      }
      completion:NULL
  ];
}

当我停止摇晃时,我收到警告(多次结束):

- [UIApplication beginIgnoringInteractionEvents]溢出。忽略。

然后(很多次,匹配开始的数量):

调用

- [UIApplication endIgnoringInteractionEvents]而不匹配-beginIgnoringInteractionEvents。忽略。

到底是怎么回事?如果我注释掉stopWobble动画,那很好,但自然我的动画不会停止。如果我在开始动画时删除“UIViewAnimationOptionAllowUserInteraction”选项,我会收到 beginIgnoringInteractionEvents 警告,但这也不好,因为我需要在这些视图摆动时与这些视图进行交互。

行为很好,所以我应该忽略这个吗?对我来说似乎是我应该修复的东西,只要我能找到导致它的原因。

2 个答案:

答案 0 :(得分:11)

尝试将UIViewAnimationOptionAllowUserInteraction添加到stopWobble。我之前收到了这个错误消息,它似乎与两个动画有关,当它们未明确设置时,试图同时执行。在我的第二个动画中添加UIViewAnimationOptionAllowUserInteraction为我解决了这个问题。

答案 1 :(得分:0)

我想当你有太多会同时动画的视图时会发生这种情况,就像viewDidAppear中的自定义视图网格一样。

一个。在iOS4下,他们都试图同时禁用UIApplication交互,并避免UIApplication溢出并忽略其中一些问题。

湾动画完所有视图后再次告诉UIApplication启用交互,但UIApplication无法识别某些启用调用,因为它们在(a)中被忽略。