我有一個UIView動畫(由touchesEnded:
事件調用),我想在允許更多用戶輸入之前完成執行。在動畫被調用之前,我檢查一個標誌「isMoving
」以查看動畫是否正在進行。然後我設置isMoving
到YES
並執行如下動畫(是的,我知道這是不是塊格式)...在UIView動畫期間防止用戶輸入
- (void) methodCalledFromViewControllerTouchesEnded {
if (isMoving == YES) {
NSLog (@"Don't start another animation!");
return;
}
isMoving = YES;
......
[UIView beginAnimations:@"move" context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.25f];
...
// DO MOVE STUFF
...
[UIView commitAnimations];
isMoving = NO;
}
然後我設置isMoving
到NO
所以後續調用從touchesEnded:
不啓動另一個動畫而目前正在進行中。但是,如果用戶在初始動畫進行過程中保持觸摸,則會重複執行此FAILS和動畫。
我不知道這是否有可能觸摸事件是在不同的線程上處理的,而不是動畫。
我也跑在調試模式下,發現該動畫實際上不是「提交」,直到控制已經離開methodCalledFromViewControllerTouchesEnded
,回到touchesEnded:
,從而使該isMoving = NO;
標誌形同虛設。
任何幫助防止重複的動畫將不勝感激。
完美!我一直在嘲笑我的頭數超過我想要承認的時間!我一直在避免轉換到這裏顯示的塊格式,因爲我有幾個將不得不效仿。但現在我想這將是值得的!我欠你一杯啤酒。 – 2011-04-21 18:50:04
我編輯了我的答案,以非塊方式向您展示。 – Christian 2011-04-21 18:54:18