5

我有一些摇晃 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警告,但这也不好,因为我需要在这些视图摆动时与它们进行交互。

这种行为很好,所以我应该忽略这个吗?在我看来,我应该解决一些问题,只要我能找出导致它的原因。

4

2 回答 2

11

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

于 2010-11-17T05:54:44.363 回答
0

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

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

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

于 2012-05-24T00:23:13.407 回答