mapkit フレームワークを使用して、近くの場所の配列を取得したいと考えています。したがって、ユーザーがテキストフィールドに入力すると、次の関数が呼び出されます。
- (void)searchForLocations:(NSString *)string
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(search:) object:nil];
[self performSelectorInBackground:@selector(search:) withObject:string];
}
- (void)search :(NSString *)string
{
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = string;
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta = 0.05;
span.longitudeDelta = 0.05;
region.span = span;
region.center = newLocation.coordinate;
request.region = region;
MKLocalSearch *search = [[MKLocalSearch alloc]initWithRequest:request];
[search startWithCompletionHandler:^(MKLocalSearchResponse
*response, NSError *error) {
if (response.mapItems.count == 0)
{
NSLog(@"No Matches");
}
else
{
NSLog(@"name = %@", item.name);
NSLog(@"Phone = %@", item.phoneNumber);
}
}];
}
ご覧のとおり、新しい入力テキストが来る場合は、以前の検索をキャンセルしたいと考えています。ただし、以前の検索はキャンセルされません。前の検索をキャンセルするにはどうすればよいですか?
前もって感謝します。