MKMapView를 사용하는 응용 프로그램을 작성했습니다. 이 응용 프로그램은 타이머를 사용하여 화면의 일부 정보를 업데이트합니다. 실제로 사용자가지도를 터치하고 드래그를 시작하면 사용자가 터치를 놓을 때까지 타이머가 더 이상 시작되지 않습니다. 나는 새로운 iOS 6에서이 문제가 사라진다는 것을 알아 차렸다. 그러나 iOS 5도 지원해야합니다. 타이머 만 실행되지 않거나 이벤트가 전혀 처리되지 않는 경우를 파악하지 못했습니다. 어떤 생각?iOS 5의 MKMapView는 사용자가 드래그하거나 줌 할 때 타이머를 금지합니다.
0
A
답변
1
Ok 해결책을 찾았습니다. UIScrollView pauses NSTimer until scrolling finishes
기본적으로 NSTimer를 자체 실행 루프에 넣어야합니다.
0
흠, 타이머와 터치 처리 코드가 동일한 실행 루프에 의해 처리되고 있거나 타이머 완료 코드가 실행을 시도 할 때 터치가 차단되어있을 가능성이 있습니다. 완료 핸들러가있는 비동기 블록을 사용하여 타이머를 실행하십시오. 그 도움이된다면
- (void)startTimerInBackground {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
//Start timer here, set completion method to be called
NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0
target: self
selector:@selector(timerCompletionMethod:)
userInfo: nil repeats:NO];
});
}
- (void)timerCompletionMethod:(NSTimer *)timer {
//Switch back to main thread here for completion code
dispatch_async(dispatch_get_main_queue(), ^(void) {
});
}
타이머는 신뢰할 수 없습니다하지만주의 할, 참조, 당신은 아마 당신은 대안을 찾아야한다 매우 정확한 타이밍을 필요로하는 경우, 아주 좋은 정보가 여기에 있습니다 :
불행히도 작동하지 않습니다. 'timerCompletionMethod'는 전혀 호출되지 않습니다. 나는 또한 당신이 제공하는 링크에 제안 된 다른 모든 방법을 시도했지만 문제는 여전히 발생합니다. 모든 끌기/확대/축소 작업 중에 runloop이 차단 된 것처럼 보입니다! – AGPX