我有一些摆动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 警告,但这也不好,因为我需要在这些视图摆动时与这些视图进行交互。
行为很好,所以我应该忽略这个吗?对我来说似乎是我应该修复的东西,只要我能找到导致它的原因。
答案 0 :(得分:11)
尝试将UIViewAnimationOptionAllowUserInteraction添加到stopWobble。我之前收到了这个错误消息,它似乎与两个动画有关,当它们未明确设置时,试图同时执行。在我的第二个动画中添加UIViewAnimationOptionAllowUserInteraction为我解决了这个问题。
答案 1 :(得分:0)
我想当你有太多会同时动画的视图时会发生这种情况,就像viewDidAppear中的自定义视图网格一样。
一个。在iOS4下,他们都试图同时禁用UIApplication交互,并避免UIApplication溢出并忽略其中一些问题。
湾动画完所有视图后再次告诉UIApplication启用交互,但UIApplication无法识别某些启用调用,因为它们在(a)中被忽略。