You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

85 lines
2.8 KiB

//
// GMSAutocompleteFetcher.h
// Google Places SDK for iOS
//
// Copyright 2016 Google LLC
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import "GMSAutocompleteFilter.h"
#import "GMSPlacesDeprecationUtils.h"
@class GMSAutocompletePrediction;
@class GMSAutocompleteSessionToken;
NS_ASSUME_NONNULL_BEGIN
/**
* Protocol for objects that can receive callbacks from GMSAutocompleteFetcher
*/
@protocol GMSAutocompleteFetcherDelegate <NSObject>
@required
/**
* Called when autocomplete predictions are available.
* @param predictions an array of GMSAutocompletePrediction objects.
*/
- (void)didAutocompleteWithPredictions:(NSArray<GMSAutocompletePrediction *> *)predictions;
/**
* Called when an autocomplete request returns an error.
* @param error the error that was received.
*/
- (void)didFailAutocompleteWithError:(NSError *)error;
@end
/**
* GMSAutocompleteFetcher is a wrapper around the lower-level autocomplete APIs that encapsulates
* some of the complexity of requesting autocomplete predictions as the user is typing. Calling
* sourceTextHasChanged will generally result in the provided delegate being called with
* autocomplete predictions for the queried text, with the following provisos:
*
* - The fetcher may not necessarily request predictions on every call of sourceTextHasChanged if
* several requests are made within a short amount of time.
* - The delegate will only be called with prediction results if those predictions are for the
* text supplied in the most recent call to sourceTextHasChanged.
*/
@interface GMSAutocompleteFetcher : NSObject
/**
* Initialize the fetcher.
*
* @param filter The filter to apply to the results. This parameter may be nil.
*/
- (instancetype)initWithFilter:(nullable GMSAutocompleteFilter *)filter NS_DESIGNATED_INITIALIZER;
/** Delegate to be notified with autocomplete prediction results. */
@property(nonatomic, weak, nullable) id<GMSAutocompleteFetcherDelegate> delegate;
/** Filter to apply to autocomplete suggestions (can be nil). */
@property(nonatomic, strong, nullable) GMSAutocompleteFilter *autocompleteFilter;
/**
* Provide a |GMSAutocompleteSessionToken| for tracking the specific autocomplete query flow.
*/
- (void)provideSessionToken:(nullable GMSAutocompleteSessionToken *)sessionToken;
/**
* Notify the fetcher that the source text to autocomplete has changed.
*
* This method should only be called from the main thread. Calling this method from another thread
* will result in undefined behavior. Calls to |GMSAutocompleteFetcherDelegate| methods will also be
* called on the main thread.
*
* This method is non-blocking.
* @param text The partial text to autocomplete.
*/
- (void)sourceTextHasChanged:(nullable NSString *)text;
@end
NS_ASSUME_NONNULL_END