功能以错误的顺序触发

时间:2018-07-12 23:42:39

标签: ios swift uitableview mapkit

我正在编写一个带有附带的UITableView的UISearchBar,以使用Apple的NLP套件,Mapkit等来建议相关位置。目标是当用户选择其中的一行时,地图将缩放至纬度和经度。但是,我遇到了一个问题,当尝试选择建议的行时,函数searchBarShouldEndEditing()在didSelectRowAt()隐藏tableView之前执行,不允许用户选择该行。我可以指定在这种情况下首先要执行哪个功能吗?

override func viewDidLoad(){
    searchBar.delegate = self     
    searchTableView.delegate = self
    searchTableView.dataSource = self
    searchCompleter.delegate = self
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let searchRequest = MKLocalSearchRequest(completion: mapItems[indexPath.row])
        let search = MKLocalSearch(request: searchRequest)
        search.start { (response, error) in
            let coordinate = response?.mapItems[indexPath.row].placemark.coordinate
            self.zoomToLatestLocation(with: coordinate!)
            self.searchTableView.isHidden = true
        }
}    

func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
    print(1)
    self.searchTableView.isHidden = true
    return true
}

0 个答案:

没有答案