【发布时间】:2019-07-12 17:42:38
【问题描述】:
我想要实现的是让一个按钮单击动作触发一个 uiview 弹出窗口,在视图顶部有一个搜索栏,然后在下面显示一个 UISearchBar 和一个 UITableView。我已经成功实现了这些事件,但是在搜索栏中单击时没有任何反应。搜索栏只有单词搜索和搜索栏按钮。我为 ViewController 子类化了 UISearchBarDelegate、UISearchResultsUpdating 和 UISearchControllerDelegate。如前所述,我在没有情节提要的情况下在 Swift 中以编程方式执行此操作。没有出路或行动。我正在调用方法来执行必要的操作。
private var resultSearchController: UISearchController!
private var locationSearchTable = LocationSearchTable()
func didClickSearchButton() {
locationSearchTable = LocationSearchTable()
locationSearchTable.tableView.delegate = self
resultSearchController = UISearchController(searchResultsController: locationSearchTable)
mapSearchTable.tableHeaderView = resultSearchController?.searchBar
resultSearchController.delegate = self
resultSearchController.searchBar.delegate = self
resultSearchController.searchResultsUpdater = self
}
我将 searchBar 添加到 tableView 标题中,它确实显示出来了。
override func viewDidLoad() {
super.viewDidLoad()
layout()
}
在 SuperView 中调用“布局”有效。
private func layout() {
popupView.translatesAutoresizingMaskIntoConstraints = false
popupView.addGestureRecognizer(panRecognizer)
didClickSearchButton()
popupView.addSubview(resultSearchController.searchBar) //Tried adding this to the view, but all it did was put it in a different location.
popupView.addSubview(openTitleLabel)
popupView.addSubview(searchButton)
popupView.addSubview(mapSearchTable)
view.addSubview(popupView)
popupView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
popupView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
bottomConstraint = popupView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: popupOffset)
bottomConstraint.isActive = true
popupView.heightAnchor.constraint(equalToConstant: 467).isActive = true
searchButton.translatesAutoresizingMaskIntoConstraints = false
searchButton.leadingAnchor.constraint(equalTo: popupView.leadingAnchor, constant: 50).isActive = true
searchButton.trailingAnchor.constraint(equalTo: popupView.trailingAnchor, constant: -50).isActive = true
searchButton.topAnchor.constraint(equalTo: popupView.topAnchor, constant: 5).isActive = true
openTitleLabel.translatesAutoresizingMaskIntoConstraints = false
openTitleLabel.leadingAnchor.constraint(equalTo: popupView.leadingAnchor, constant: 50).isActive = true
openTitleLabel.trailingAnchor.constraint(equalTo: popupView.trailingAnchor, constant: -50).isActive = true
openTitleLabel.topAnchor.constraint(equalTo: popupView.topAnchor, constant: 5).isActive = true
openTitleLabel.bottomAnchor.constraint(equalTo: popupView.bottomAnchor, constant: 0)
mapSearchTable.translatesAutoresizingMaskIntoConstraints = false
mapSearchTable.topAnchor.constraint(equalTo: popupView.topAnchor, constant: 50).isActive = true
mapSearchTable.bottomAnchor.constraint(equalTo: popupView.bottomAnchor, constant: 10).isActive = true
mapSearchTable.leftAnchor.constraint(equalTo: popupView.leftAnchor).isActive = true
mapSearchTable.rightAnchor.constraint(equalTo: popupView.rightAnchor).isActive = true
mapSearchTable.centerXAnchor.constraint(equalTo: popupView.centerXAnchor).isActive = true
}
我可以看到所有元素,但是单击输入框时文本字段内没有焦点。
【问题讨论】:
标签: uiview uisearchbar uisearchcontroller