2017-08-31 73 views
1

目前,我按照这些步骤实施了Google地方信息自动填充搜索栏。GooglePlacesAutocomplete在活动时向上移动搜索栏

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

到目前为止好,它的工作原理,但是当我在搜索栏上单击下移,这是我不想。

来源: enter image description here

要(点击时):

enter image description here

我当前的代码是完全一样的教程(我也尝试过它后修正错误,不工作)

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 
    } 

回答

1

嗯,我有同样的问题,我通过使用下面的代码行使它正常工作:

definesPresentationContext = false 

我测试了很多,它对我来说是完美的。