2011-03-06 45 views
1

我想在屏幕上有4個UIViews,並在觸摸時爲它們的背景色設置動畫,並在觸摸結束時將其更改回來。當我在touches內動畫時迷路了開始

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

不幸的是,當我執行此動畫的touchesBegan - touchesEnded將不會觸發除非觸摸動畫完成後結束。這意味着touchesEnded在動畫期間會因觸摸而丟失。

另外,快速點擊UIView不會導致多個touchesBegan調用。似乎在動畫(在第一次觸摸中產生)完成之前沒有接收到新的觸摸。

如何用動畫響應所有接觸?我實際上喜歡每一個新的觸摸來中斷以前的動畫......並重新開始。

回答

2

看起來我需要設置的塊動畫的選項

options:UIViewAnimationOptionAllowUserInteraction 
0

事實證明,這種老式的動畫似乎並沒有阻止新的touchesBegan或touchesEnded:

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    [UIView beginAnimations:@"touchesBegan" context:nil]; 
    self.backgroundColor = altColor; 
    [UIView commitAnimations]; 
}