2011-02-03 6 views
0

격자로 정렬 된 UIViewController 페이지에서 4 개의 하위 뷰가 있습니다. 경우에 따라 애니메이션이 하위보기에서 실행됩니다. 하위 뷰 중 하나에서 탭을 인식하려고합니다 (UITapGestureRecognizer 사용).iOS : 애니메이션이 진행 중일 때 제스처 인식기를 더 빠르게 반응시키는 방법은 무엇입니까?

이제 애니메이션이 실행되지 않을 때 탭이 부드럽게 인식됩니다. 그러나 애니메이션이 실행 중일 때 대부분의 탭은 전혀 인식되지 않습니다 (애니메이션이 다른 서브 뷰에서 실행 중일 때조차도).

제스처 인식기의 우선 순위를 애니메이션보다 높일 수있는 방법이 있습니까? 모든 제안을 부탁드립니다. 감사합니다

답변

1

문제는 애니메이션 optio ns를 0으로 설정하십시오. 애니메이션 옵션으로 UIViewAnimationOptionAllowUserInteraction을 추가 한 후 제대로 작동합니다.

0

과 같이 들리며 주 스레드의 고전적인 케이스가 막혔습니다. 멀티 스레딩으로 문제가 해결됩니다.

이 같은 어떻게 좀 : 별도의 방법으로 애니메이션을 일단

-(void)performAnimations{ 
    //Do your animations in this method 
}

, 당신은이 작업을 수행하는 것이 자유 롭다는 :

[self performSelectorInBackground:@selector(performAnimations)];

이 주를 떠나 스레드가 자유롭게 터치 이벤트를 인식 할 수있게 해줍니다.

+0

나는 이것을 시도했지만 여전히 애니메이션을 실행하는 동안 반응이 없다. 멀티 스레딩이 작동하기 전에 구성 할 부분이 있습니까? – Shameem

+0

자동 회수 풀을 추가하고 애니메이션이 새로운 메소드 구조로 잘 작동하면 애니메이션 코드를 정리할 때가 있습니다. 내 경험상 iPod touch 2G 이상에서는 일반적인 사용 사례가 거의 없습니다. 제스처 인식을 좀 더 신속하게 처리하기 위해 할 수있는 일은 더 이상 생각할 수 없습니다. 죄송합니다. –

관련 문제