루프에서 일부 코드를 실행하고 싶지만 uiscrollview가 스크롤되는 동안 일시 중지하려고합니다.objective-c에서 루프를 일시 중지/다시 시작하는 방법
scrollViewDidScroll 메서드에서 "YES"로 설정되고 scrollViewDidEndDecelerating 메서드에서 "NO"로 설정된 isScrolling이라는 BOOL을 만들었습니다.
루프를 scrollViewDidEndDecelerating 메서드에 넣고 싶지만 isScrolling == YES 일 때 일시 중지하고 isScrolling == NO 일 때 다시 시작하고 싶습니다.
배열을 반복하고 있으므로 루프에서 배열을 중단 한 위치에서 루프를 가져오고 싶습니다.
예를 들어, 여기에 지속적으로 나는 viewDidAppear 방법에 배치 1 씩 높은 계산 간단한 루프입니다 :이 루프는 어떤 이유로 실행되는 동안
for (int i = 1; i > 0; i++) {
NSLog(@"i = %d", i);
if (isScrolling == YES) {
NSLog(@"break");
break;
}
}
그러나, 모든 스크롤을 사용할 수 없습니다 그래서는 취소 할 수 없습니다.
어떻게하면됩니까?
감사합니다.
일부 하위보기에 이미지 그룹을 추가하여 나중에 빨리 볼 수 있습니다. 아쉽게도 uiviews 및 이미지는 스레드로부터 안전하지 않습니다.그랜드 센트럴 디스패치 (Grand Central Dispatch)를 사용하여 실험 해본 결과, 스레드 안전하지 않은 요소로 인해 불안정성이 발생한다는 것을 제외하면 일반적으로 작동합니다. – Jonah
내가 시도한 적이 없기 때문에 이것은 잘못된 나무를 짖고 있을지도 모른다. 별도의 스레드에서 이러한 다양한 UIViews/UIImageViews를 구성 할 수 있는지 궁금하지만 performSelectorOnMainThread를 사용하여 활발하게 표시된 뷰 계층 구조에 추가하는 책임을지게됩니다. Windows에서 일반적으로 좋은 아이디어는 아니지만 UIView에 iOS의 멋진 세계에서 일종의 내부 스레드 선호도가 있는지 여부는 알 수 없습니다. – imaginaryboy
이 돈이됩니다. 루프가 viewDidLoad에 있으면 모든 시각적 애니메이션과 사용자 상호 작용을 담당하는 기본 UI 스레드가 완전히 차단됩니다. – heckj