종료 기다립니다, 나는 setAnimationDidStopSelector를 사용하여 애니메이션의 엔딩을 잡으려고. 애니메이션이 끝날 때까지 코드 실행을 일시 중단하려고합니다. 나는 이것을 시도했다. 글로벌 BOOL 변수를 설정하고, 애니메이션을 커밋하기 전에 TRUE로 설정하고 while 루프를 사용하여 애니메이션을 커밋 한 후에 커밋하십시오. setAnimationDidStopSelector에서 BOOL 변수를 FALSE로 설정하고 루프가 깨지는 동안 바란다. 하지만 불행히도 이것이 작동하지 않았고, 코드는 setAnimationDidStopSelector에 빠지지도 않았습니다 (일부 추적 출력을 통해 확인했습니다). 편집 : 해당 BOOL 변수 처리가 추가되지 않으면 코드는 처리기 메서드로 실행됩니다.아이폰 애니메이션 아이폰 응용 프로그램에서
애니메이션이 발생하는 코드는 다음과 같습니다 :
- (void)animationDidStop:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {
printf("abc\n"); fflush(stdout);
self.AnimationEnded=true;
}
당신은 무엇을 제안 않습니다
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]);
는 또한이 핸들러의 코드?
애니메이션 블록 외부에 있더라도? –
iPhone OS는 실행 루프를 목표로합니다. 자신 만의 긴밀한 루프에 앉아서 기다리는 대신 콜백을 등록하거나 타이머를 설정하고 실행 루프를 실행 시키십시오. – drawnonward
바쁜 루핑은 끔찍한 접근 방식이며 UI 스레드에서 처리하는 것은 더욱 어렵습니다. –