带有搜索栏的 UITableView 作为 inputView

Posted

技术标签:

【中文标题】带有搜索栏的 UITableView 作为 inputView【英文标题】:UITableView with Search bar as inputView 【发布时间】:2016-07-21 21:30:15 【问题描述】:

我有一个文本字段,它在其 inputview 上显示一个 tableview 并在选择时返回值我向 tableview 添加了一个搜索栏,但问题是,当我点击搜索栏时,tableview 会自动关闭和重新打开,这意味着我什至无法单击搜索栏。有什么建议吗?

这里是代码。

class myClass: UIViewController, UITableViewDataSource, UITableViewDelegate, UINavigationBarDelegate, UISearchBarDelegate 

    //the all are in viewdidload
    var tableView: UITableView  =   UITableView()
    tableView = UITableView(frame: UIScreen.mainScreen().bounds, style: UITableViewStyle.Plain)
    tableView.delegate      =   self
    tableView.dataSource    =   self
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

    let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 44))
    let navigationItem = UINavigationItem()
    var searchBar:UISearchBar = UISearchBar()
    searchBar.searchBarStyle = UISearchBarStyle.Prominent
    searchBar.placeholder = " Search..."
    searchBar.sizeToFit()
    searchBar.translucent = false
    searchBar.backgroundImage = UIImage()
    searchBar.delegate = self
    navigationBar.items = [navigationItem]

    tableView.tableHeaderView = navigationBar

    toTextField.inputView = self.tableView


【问题讨论】:

【参考方案1】:

单击 Text field 后,您的文本字段将成为第一响应者。既然你提到了 toTextField.inputView = self.tableView;这样你的表格视图就会出现。

点击搜索栏后,立即搜索栏即为第一响应者。由于 TextFIeld 不再是第一响应者,因此表格视图消失。

一种解决方案可以是: 不要将表格视图作为文本字段的输入视图。那是 : //toTextField.inputView = self.tableView

相反,您可以使用 TextField 的委托方法之一呈现表格视图控制器:

 func textFieldDidBeginEditing(textField: UITextField)   
    let test : UITableViewController = UITableViewController.init(style: UITableViewStyle.Plain)
    test.tableView = self.tableView
    let testNav: UINavigationController = UINavigationController(rootViewController: test);
    self.presentViewController(testNav, animated: true, completion: nil)

【讨论】:

以上是关于带有搜索栏的 UITableView 作为 inputView的主要内容,如果未能解决你的问题,请参考以下文章

编辑搜索栏时将 UITableView 添加到子视图

ios 顶部带有标签栏的自定义 uitableview

带有范围栏的 UITableView 上的 UISearchBar 在其他 UI 项上调整自身大小

两个带有搜索栏的自定义单元格

iOS7 中 UISearchBar 和 UITableView 的问题

更改 UITableView 中的搜索栏高度(swift 5)