【问题标题】:iOS Search bar closes when letter pressed按下字母时iOS搜索栏关闭
【发布时间】:2016-12-17 12:40:34
【问题描述】:

我在 swift 3 中的搜索栏有这个奇怪的问题。

所以我希望将搜索栏粘贴到表格视图的顶部(但不要将它放在情节提要中) 我有以下代码。

    let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
            super.viewDidLoad()



            searchController.searchResultsUpdater = self
            searchController.dimsBackgroundDuringPresentation = false
            definesPresentationContext = true
            searchController.searchBar.placeholder = "Search for Event Name or Category"
    }


        func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
            return self.searchController.searchBar
        }

        func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
            return searchController.searchBar.frame.height
        }

所以当我上下滚动表格视图时,搜索栏确实保持在顶部。 当我按下搜索栏输入文本时,它会显示键盘和取消按钮。

如果我按下取消按钮,键盘就会消失,这是正常的。

但是如果我按键盘上的某些东西(让我们说字母A) 它过滤表格视图并关闭键盘。它也不允许我按下取消或 (x) 按钮。 知道为什么吗?

附:在模拟器中工作得很好!但是在我的 iPhone SE 上是在做上面的事情!

【问题讨论】:

  • 为什么不将搜索栏添加为 UITableviewHeader?
  • @Dev_Tandel 因为当我向下滚动时它不会粘在 tableview 的顶部

标签: ios swift swift3 uisearchbar uisearchcontroller


【解决方案1】:

删除标题的两个函数并将这些行添加到行上方的 viewDidLoad 中。

 searchController.hidesNavigationBarDuringPresentation = false
        let tableHeaderView: UIView = UIView.init(frame: searchController.searchBar.frame)
        tableHeaderView.addSubview(searchController.searchBar)
        self.locationTable.tableHeaderView = tableHeaderView

然后把这个函数也放进去:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let searchBar:UISearchBar = searchController.searchBar
        var searchBarFrame:CGRect = searchBar.frame
        if searchController.isActive {

            searchBarFrame.origin.y = 0
        }
        else {
            searchBarFrame.origin.y = max(0, scrollView.contentOffset.y + scrollView.contentInset.top)

        }
        searchController.searchBar.frame = searchBarFrame
    }

现在我相信你会得到你想要的结果。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多