这是我制作的UISearchController

var resultSearchController = UISearchController()
var myTableView = UITableView()

override func viewDidLoad() {
    super.viewDidLoad()

    myTableView.frame = CGRectMake(0, 21, view.bounds.width, view.bounds.height-20) //programatically made my tableview for use with UISearchController
    myTableView.delegate = self
    myTableView.dataSource = self

    myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

    self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.searchBar.delegate = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.searchBar.userInteractionEnabled = true
        controller.searchBar.hidden = false

        self.myTableView.tableHeaderView = controller.searchBar // attach searchBar to tableView

        return controller
    })()

    UIApplication.sharedApplication().keyWindow?.addSubview(myTableView) //put view on top of navigation bar


类似的问题表明,父视图不够大。我认为这不是问题。也有人建议SearchController被另一个视图覆盖。同样,我不认为这是问题。

我可以与我的tableView进行互动。当我点击SearchBar时,什么也没有发生。到底是怎么回事?

这是我的应用程序。

ios - 与以编程方式创建的UISearchController的交互阻止了iOS 9-LMLPHP

编辑:这是发布答案后的我的应用程序:

ios - 与以编程方式创建的UISearchController的交互阻止了iOS 9-LMLPHP

最佳答案

我想出了一个可能对您有帮助的解决方案。

替换为:

UIApplication.sharedApplication().keyWindow?.addSubview(myTableView)


有了这个:

UIApplication.sharedApplication().keyWindow?.subviews.last?.addSubview(myTableView)

10-08 05:48