私のアプリケーションには、ユーザーが住所を入力できる検索バーがあり、ジオコーディングされた結果が表示されます。次のコードに従って、ユーザーが入力すると結果が更新されます。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
...
if (self.geocoder.geocoding) [self.geocoder cancelGeocode];
[self.geocoder geocodeAddressString:searchText completionHandler:^(NSArray *placemarks, NSError *error) {
if (error != nil) {
NSLog(@"ERROR during geocode: %@", error.description);
return;
}
//update the view
}];
}
これは、ユーザーが検索フィールドに入力する最初の数文字に対して機能します。ただし、ユーザーがさらに多くの文字を繰り返し入力すると、ジオコーダーは次のエラーを返し始めます (これは、ネットワークに問題があったことを意味します)。
ERROR during geocode: Error Domain=kCLErrorDomain Code=2 "The operation couldn’t be completed. (kCLErrorDomain error 2.)"
ViewController 全体がリロードされるまで、ジオコーダーは再び機能しません。なぜこれが起こっているのでしょうか? また、それを解決するにはどうすればよいでしょうか?