// Copyright 2020 Google LLC. All rights reserved. // // // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this // file except in compliance with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software distributed under // the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF // ANY KIND, either express or implied. See the License for the specific language governing // permissions and limitations under the License. import GooglePlaces import UIKit /// Demo showing a Autocomplete view controller pushed on the navigation stack. Please refer to /// https://developers.google.com/places/ios-sdk/autocomplete class AutocompletePushViewController: AutocompleteBaseViewController { private let margin: CGFloat = 80 private let buttonHeight: CGFloat = 50 private lazy var showWidgetButton: UIButton = { let button = UIButton() button.setTitle( NSLocalizedString( "Demo.Content.Autocomplete.ShowWidgetButton", comment: "Button title for 'show autocomplete widget'"), for: .normal) button.setTitleColor(.darkGray, for: .normal) button.translatesAutoresizingMaskIntoConstraints = false button.addTarget(self, action: #selector(showAutocompleteWidget), for: .touchUpInside) return button }() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white automaticallyAdjustsScrollViewInsets = true view.addSubview(showWidgetButton) NSLayoutConstraint.activate([ showWidgetButton.leadingAnchor.constraint(equalTo: view.leadingAnchor), showWidgetButton.trailingAnchor.constraint(equalTo: view.trailingAnchor), showWidgetButton.topAnchor.constraint(equalTo: view.topAnchor, constant: margin), showWidgetButton.heightAnchor.constraint(equalToConstant: buttonHeight), ]) } @objc func showAutocompleteWidget() { showWidgetButton.isHidden = true let autocompleteViewController = GMSAutocompleteViewController() autocompleteViewController.delegate = self if let config = autocompleteConfiguration { autocompleteViewController.autocompleteFilter = config.autocompleteFilter autocompleteViewController.placeFields = config.placeFields } navigationController?.pushViewController(autocompleteViewController, animated: true) } } extension AutocompletePushViewController: GMSAutocompleteViewControllerDelegate { func viewController( _ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace ) { navigationController?.popToViewController(self, animated: true) super.autocompleteDidSelectPlace(place) } func viewController( _ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error ) { navigationController?.popToViewController(self, animated: true) super.autocompleteDidFail(error) } func wasCancelled(_ viewController: GMSAutocompleteViewController) { navigationController?.popToViewController(self, animated: true) super.autocompleteDidCancel() } }