我有textfield,在其inputview上显示一个tableview并在select上返回值我将一个搜索栏添加到tableview但问题是,当我点击searchbar 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
}
答案 0 :(得分:0)
单击“文本”字段后,文本字段将成为第一响应者。既然你提到了toTextField.inputView = self.tableView;所以你会看到表格视图。
单击搜索栏后,“立即搜索”栏将成为第一个响应者。由于TextFIeld不再是第一响应者因此表View Disappear。
一种解决方案可以是: 不要将表视图作为文本字段的输入视图。那是 : //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)
}