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.
168 lines
6.2 KiB
168 lines
6.2 KiB
// |
|
// GMSAutocompleteTableDataSource.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 <UIKit/UIKit.h> |
|
|
|
#import "GMSAutocompleteFilter.h" |
|
#import "GMSAutocompletePrediction.h" |
|
#import "GMSPlace.h" |
|
#import "GMSPlaceFieldMask.h" |
|
#import "GMSPlacesDeprecationUtils.h" |
|
|
|
@class GMSAutocompleteTableDataSource; |
|
|
|
NS_ASSUME_NONNULL_BEGIN |
|
|
|
/** |
|
* Protocol used by |GMSAutocompleteTableDataSource|, to communicate the user's interaction with the |
|
* data source to the application. |
|
*/ |
|
@protocol GMSAutocompleteTableDataSourceDelegate <NSObject> |
|
|
|
@required |
|
|
|
/** |
|
* Called when a place has been selected from the available autocomplete predictions. |
|
* @param tableDataSource The |GMSAutocompleteTableDataSource| that generated the event. |
|
* @param place The |GMSPlace| that was returned. |
|
*/ |
|
- (void)tableDataSource:(GMSAutocompleteTableDataSource *)tableDataSource |
|
didAutocompleteWithPlace:(GMSPlace *)place; |
|
|
|
/** |
|
* Called when a non-retryable error occurred when retrieving autocomplete predictions or place |
|
* details. A non-retryable error is defined as one that is unlikely to be fixed by immediately |
|
* retrying the operation. |
|
* <p> |
|
* Only the following values of |GMSPlacesErrorCode| are retryable: |
|
* <ul> |
|
* <li>kGMSPlacesNetworkError |
|
* <li>kGMSPlacesServerError |
|
* <li>kGMSPlacesInternalError |
|
* </ul> |
|
* All other error codes are non-retryable. |
|
* @param tableDataSource The |GMSAutocompleteTableDataSource| that generated the event. |
|
* @param error The |NSError| that was returned. |
|
*/ |
|
- (void)tableDataSource:(GMSAutocompleteTableDataSource *)tableDataSource |
|
didFailAutocompleteWithError:(NSError *)error; |
|
|
|
@optional |
|
|
|
/** |
|
* Called when the user selects an autocomplete prediction from the list but before requesting |
|
* place details. Returning NO from this method will suppress the place details fetch and |
|
* didAutocompleteWithPlace will not be called. |
|
* @param tableDataSource The |GMSAutocompleteTableDataSource| that generated the event. |
|
* @param prediction The |GMSAutocompletePrediction| that was selected. |
|
*/ |
|
- (BOOL)tableDataSource:(GMSAutocompleteTableDataSource *)tableDataSource |
|
didSelectPrediction:(GMSAutocompletePrediction *)prediction; |
|
|
|
/** |
|
* Called once every time new autocomplete predictions are received. |
|
* @param tableDataSource The |GMSAutocompleteTableDataSource| that generated the event. |
|
*/ |
|
- (void)didUpdateAutocompletePredictionsForTableDataSource: |
|
(GMSAutocompleteTableDataSource *)tableDataSource; |
|
|
|
/** |
|
* Called once immediately after a request for autocomplete predictions is made. |
|
* @param tableDataSource The |GMSAutocompleteTableDataSource| that generated the event. |
|
*/ |
|
- (void)didRequestAutocompletePredictionsForTableDataSource: |
|
(GMSAutocompleteTableDataSource *)tableDataSource; |
|
|
|
@end |
|
|
|
/** |
|
* GMSAutocompleteTableDataSource provides an interface for providing place autocomplete |
|
* predictions to populate a UITableView by implementing the UITableViewDataSource and |
|
* UITableViewDelegate protocols. |
|
* |
|
* GMSAutocompleteTableDataSource is designed to be used as the data source for a |
|
* UISearchDisplayController. |
|
* |
|
* NOTE: UISearchDisplayController has been deprecated since iOS 8. It is now recommended to use |
|
* UISearchController with |GMSAutocompleteResultsViewController| to display autocomplete results |
|
* using the iOS search UI. |
|
* |
|
* Set an instance of GMSAutocompleteTableDataSource as the searchResultsDataSource and |
|
* searchResultsDelegate properties of UISearchDisplayController. In your implementation of |
|
* shouldReloadTableForSearchString, call sourceTextHasChanged with the current search string. |
|
* |
|
* Use the |GMSAutocompleteTableDataSourceDelegate| delegate protocol to be notified when a place is |
|
* selected from the list. Because autocomplete predictions load asynchronously, it is necessary |
|
* to implement didUpdateAutocompletePredictions and call reloadData on the |
|
* UISearchDisplayController's table view. |
|
* |
|
*/ |
|
@interface GMSAutocompleteTableDataSource : NSObject <UITableViewDataSource, UITableViewDelegate> |
|
|
|
/** Delegate to be notified when a place is selected or picking is cancelled. */ |
|
@property(nonatomic, weak, nullable) IBOutlet id<GMSAutocompleteTableDataSourceDelegate> delegate; |
|
|
|
/** Filter to apply to autocomplete suggestions (can be nil). */ |
|
@property(nonatomic, strong, nullable) GMSAutocompleteFilter *autocompleteFilter; |
|
|
|
/** The background color of table cells. */ |
|
@property(nonatomic, strong) UIColor *tableCellBackgroundColor; |
|
|
|
/** The color of the separator line between table cells. */ |
|
@property(nonatomic, strong) UIColor *tableCellSeparatorColor; |
|
|
|
/** The color of result name text in autocomplete results */ |
|
@property(nonatomic, strong) UIColor *primaryTextColor; |
|
|
|
/** The color used to highlight matching text in autocomplete results */ |
|
@property(nonatomic, strong) UIColor *primaryTextHighlightColor; |
|
|
|
/** The color of the second row of text in autocomplete results. */ |
|
@property(nonatomic, strong) UIColor *secondaryTextColor; |
|
|
|
/** The tint color applied to controls in the Autocomplete view. */ |
|
@property(nonatomic, strong, nullable) UIColor *tintColor; |
|
|
|
/** |
|
* The |GMSPlaceField| for specifying explicit place details to be requested. Default returns |
|
* all available fields. |
|
*/ |
|
@property(nonatomic, assign) GMSPlaceField placeFields; |
|
|
|
/** Designated initializer */ |
|
- (instancetype)init NS_DESIGNATED_INITIALIZER; |
|
|
|
/** |
|
* Notify the data source 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 |GMSAutocompleteTableDataSourceDelegate| 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; |
|
|
|
/** |
|
* Clear all predictions. |
|
* |
|
* NOTE: This will call the two delegate methods below: |
|
* |
|
* - |didUpdateAutocompletePredictionsForResultsController:| |
|
* - |didRequestAutocompletePredictionsForResultsController:| |
|
* |
|
* The implementation of this method is guaranteed to call these synchronously and in-order. |
|
*/ |
|
- (void)clearResults; |
|
|
|
@end |
|
|
|
NS_ASSUME_NONNULL_END
|
|
|