当我在touchesBegan内部制作动画时,感觉很迷茫

时间:2011-03-06 17:24:22

标签: iphone ios uiview uitouch uiresponder

我希望屏幕上有4个UIViews,并在触摸时为其背景颜色设置动画,并在触摸结束时将其更改回来。

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    [UIView animateWithDuration:0.1
        animations:^{
            self.backgroundColor = altColor;
        }];
}

不幸的是,当我在touchesBegan中执行此动画时 - 除非在动画完成后触摸结束,否则touchesEnded不会触发。这意味着touchesEnded会在动画期间因触摸而丢失。

此外,快速点击UIView不会导致多次touchesBegan调用。在动画(在第一次触摸中产生)完成之前,似乎没有接收到新的触摸。

如何使用动画回复所有动画?我实际上喜欢每一个新的触摸来打断上一个动画......并重新开始它。

2 个答案:

答案 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];
}