在iPhone應用程序中,我嘗試使用setAnimationDidStopSelector捕捉動畫結尾。我嘗試暫停代碼執行,直到動畫結束。我試過這個;設置一個全局BOOL變量,在提交動畫之前以及在使用while循環等待動畫之後將其設置爲TRUE。在setAnimationDidStopSelector中,將BOOL變量設置爲FALSE,並希望while循環中斷。但不幸的是,這不起作用,代碼甚至沒有落入setAnimationDidStopSelector(我用一些跟蹤輸出來檢查它)。編輯:如果該BOOL變量處理不添加,代碼運行到處理程序方法。iPhone等待動畫結束
其中動畫發生的代碼如下:
self.AnimationEnded=FALSE;
[UIView beginAnimations:NULL context:NULL];
[UIView setAnimationDuration:2];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
// do sth.
[UIView commitAnimations];
while(![self AnimationEnded]);
而且這是處理程序的代碼:
- (void)animationDidStop:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {
printf("abc\n"); fflush(stdout);
self.AnimationEnded=true;
}
你有什麼建議?
? – 2010-04-28 07:16:50
iPhone OS面向運行循環。而不是坐在自己的緊密循環中等待一些事情,註冊一個回調或設置一個計時器,讓運行循環運行。 – drawnonward 2010-04-28 17:06:45
繁忙的循環是一種可怕的方法,並且從UI線程執行它更糟糕。 – 2012-11-20 17:08:09