У меня есть некоторый код, который колеблется в UIViews, очень похоже на то, как вы редактируете домашние экраны iOS.
У меня есть 2 следующих метода для достижения этого эффекта вобуляции:
- (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 , но это также бесполезно, поскольку мне нужно взаимодействовать с этими представлениями, пока они колеблются.
Поведение работает нормально, так что я должен просто игнорировать это?Мне кажется, что-то, что я должен исправить, если только я смогу выяснить, что вызывает это.