2017-08-31 3 views
1

Actuellement, j'ai suivi ces étapes pour implémenter une barre de recherche de saisie semi-automatique avec Google Adresses.GooglePlacesAutocomplete déplace la barre de recherche vers le haut lorsqu'elle est active

https://developers.google.com/places/ios-api/autocomplete#add_an_autocomplete_ui_control

Jusqu'à présent, si bon, cela fonctionne, mais quand je clique sur la barre de recherche, il se déplace vers le bas, qui est ce que je ne veux pas.

De: enter image description here

A (quand on clique dessus):

enter image description here

Mon code actuel est tout à fait le même que dans le tutoriel (j'ai essayé aussi le bugfix après, le travail ne marche pas)

var resultsViewController: GMSAutocompleteResultsViewController? 
    var searchController: UISearchController? 
    var resultView: UITextView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.title = "Event-Filter"; 

     resultsViewController = GMSAutocompleteResultsViewController() 
     resultsViewController?.delegate = self 

     searchController = UISearchController(searchResultsController: resultsViewController) 
     searchController?.searchResultsUpdater = resultsViewController 

     let subView = UIView(frame: CGRect(x: 0, y: 0.0, width: self.view.frame.width, height: 45.0)) 

     subView.addSubview((searchController?.searchBar)!) 
     view.addSubview(subView) 
     searchController?.searchBar.sizeToFit() 
     searchController?.searchBar.placeholder = "Enter a specific place!"; 

     navigationController?.navigationBar.isTranslucent = false 
     searchController?.hidesNavigationBarDuringPresentation = false 

     // When UISearchController presents the results view, present it in 
     // this view controller, not one further up the chain. 
     definesPresentationContext = true 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    //Handle User Selection 

    func resultsController(_ resultsController: GMSAutocompleteResultsViewController, didAutocompleteWith place: GMSPlace) { 
     searchController?.isActive = false 
     searchController?.searchBar.text = place.formattedAddress; 
     print("Place name: \(place.name)") 
     print("Place address: \(place.formattedAddress ?? "not found")") 
     print("Place lat:" + String(place.coordinate.latitude)) 

    } 

    func resultsController(_ resultsController: GMSAutocompleteResultsViewController, 
          didFailAutocompleteWithError error: Error){ 
     let backend = BackendService() 
     backend.alert(view: self, message: error.localizedDescription, title: "Something went wrong!") 
    } 

    // Turn the network activity indicator on and off again. 
    func didRequestAutocompletePredictions(forResultsController resultsController: GMSAutocompleteResultsViewController) { 
     UIApplication.shared.isNetworkActivityIndicatorVisible = true 
    } 

    func didUpdateAutocompletePredictions(forResultsController resultsController: GMSAutocompleteResultsViewController) { 
     UIApplication.shared.isNetworkActivityIndicatorVisible = false 
    } 

Répondre

1

Eh bien, j'ai eu le même problème et je l'ai fait fonctionner correctement en utilisant la ligne de code suivante: Je l'ai beaucoup testé et il fonctionne parfaitement pour moi.