我希望屏幕上有4个UIViews,并在触摸时为其背景颜色设置动画,并在触摸结束时将其更改回来。
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
[UIView animateWithDuration:0.1
animations:^{
self.backgroundColor = altColor;
}];
}
不幸的是,当我在touchesBegan中执行此动画时 - 除非在动画完成后触摸结束,否则touchesEnded不会触发。这意味着touchesEnded会在动画期间因触摸而丢失。
此外,快速点击UIView不会导致多次touchesBegan调用。在动画(在第一次触摸中产生)完成之前,似乎没有接收到新的触摸。
如何使用动画回复所有动画?我实际上喜欢每一个新的触摸来打断上一个动画......并重新开始它。
答案 0 :(得分:2)
看起来我需要在块动画上设置一个选项
options:UIViewAnimationOptionAllowUserInteraction
答案 1 :(得分:0)
事实证明,这种旧版动画似乎并没有阻止新的touchesBegan或touchesEnded:
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
[UIView beginAnimations:@"touchesBegan" context:nil];
self.backgroundColor = altColor;
[UIView commitAnimations];
}