Roo*_*Pro 8 ios swift uisearchcontroller
我在表视图控制器中创建了一个UISearchController.我使用来自另一个视图控制器的push segue来查看此表视图控制器.我希望一旦按下表视图控制器,键盘就会在搜索栏中显示光标.
我在viewDidLoad方法中使用了搜索控制器
self.mySearchController.active = true
Run Code Online (Sandbox Code Playgroud)
它确实使搜索控制器处于活动状态,但这不会调出键盘,光标也不会放在搜索栏中.我也试过了
self.mySearchController.searchBar.becomeFirstResponder()
Run Code Online (Sandbox Code Playgroud)
这条线似乎没有任何效果.
如何自动/以编程方式调出键盘?下面是我的代码的更详细版本
class PickAddressViewController: UITableViewController, UISearchResultsUpdating {
var searchText = ""
var mySearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
self.mySearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.searchBar.text = self.searchText
self.tableView.tableHeaderView = controller.searchBar
return controller
})()
self.mySearchController.active = true
self.mySearchController.searchBar.becomeFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)
成为BeginResponder的方法,但是您不应该在viewDidLoad中这样做。查看以下讨论以了解详细信息- 无法将searchBar设置为firstResponder
viewDidLoad:searchViewController.delegate = self
Run Code Online (Sandbox Code Playgroud)
viewDidAppear:searchViewController.isActive = true
Run Code Online (Sandbox Code Playgroud)
这会激活 SearchController
extension MyViewController: UISearchControllerDelegate {
func didPresentSearchController(_ searchController: UISearchController) {
DispatchQueue.main.async {
searchController.searchBar.becomeFirstResponder()
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9131 次 |
| 最近记录: |