我有這樣一段代碼管理「拉刷新」,它更新了設備的位置:dispatch_after CLLocationManager didUpdateLocations或didFailWithError
[self.glassScrollView.foregroundScrollView addPullToRefreshWithActionHandler:^{
int64_t delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
NSLog(@"Pulled");
[weakSelf.locationManager startUpdatingLocation];
[weakForegroundScrollView.pullToRefreshView stopAnimating];
});
}];
當它啓動時更新動畫停止的位置,而不是在它實際更新位置或返回錯誤。這造成了它似乎已經更新位置和UI(旋轉輪動畫消失)的尷尬情況,但它仍然通過CLLocationManagerDelegate
方法處理它。
那麼,用這個隊列「連接」locationManager:didUpdateLocations
和locationManager:didFailWithError
方法的最佳方法是什麼? 我正在考慮在上面的代碼中添加某種「偵聽器」,等待在CLLocationManagerDelegate
方法中調用某個方法。
這裏還有我的locationManager:didUpdateLocations
方法。
(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
NSLog(@"didUpdateLocations");
CLLocation *currentLocation = [locations lastObject];
// do stuff in the UI
// I stop updating the location to save battery
[self.locationManager stopUpdatingLocation];
}
謝謝!
你爲什麼不只是把[weakForegroundScrollView.pullToRefreshView stopAnimating];在didUpdateLocations裏面?或didFailWithError? – Ricky
您是否在使用'SVPullToRefresh'?或者其他一些拉到刷新控制? – Rob
@Ricky這可能是一個解決方案,但隨着我的應用程序的增長,我會擴大'pull to refresh'動作到其他方法,所以它不僅僅是更新位置。謝謝! – Giovanni