Swift UISearchController表格视图搜索结果滚动不会在键盘上方移动到最后一行

问题描述 投票:0回答:1

在我的情况下,我将Tableview与searchController一起使用。单击搜索按钮后将显示searchcontroller。在这里,一旦搜索结果显示时间到了搜索控制器,如果我滚动表格视图,它就不会滚动到底部的最后一个“行”。我需要在keyboard上方显示底行。我尝试了下面的代码,但是没有用。

按钮单击以显示搜索控制器

@IBAction func Click_search(_ sender: Any) {
        searchController = UISearchController(searchResultsController: nil)
        searchController.hidesNavigationBarDuringPresentation = false
        searchController.searchBar.keyboardType = UIKeyboardType.asciiCapable
        searchController.searchBar.placeholder = "Search"
         searchController.searchBar.backgroundColor =  UIColor.red
        searchController.searchBar.tintColor =  UIColor.white
        let cancelButtonAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
        UIBarButtonItem.appearance().setTitleTextAttributes(cancelButtonAttributes , for: .normal)
        searchController.dimsBackgroundDuringPresentation = false
        self.searchController.searchBar.delegate = self
        searchController.searchResultsUpdater = self
        present(searchController, animated: true, completion: nil)
    }

Inside ViewDidload

  NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)

隐藏和显示键盘以调整Tablview高度

@objc private func keyboardWillShow(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
            tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height + 25, right: 0)
        }
    }

    @objc private func keyboardWillHide(notification: NSNotification) {
        tableView.contentInset = .zero
    }
ios swift tableview uisearchcontroller
1个回答
0
投票

尝试此代码。您正在滚动TableView。请尝试滚动您的超级视图。它会工作的。尝试让我知道。

在Click_search操作中添加下面的代码。

NotificationCenter.default.addObserver(self, selector: #selector(self.keyboard(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(self.keyboard(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(self.keyboard(notification:)), name:UIResponder.keyboardWillChangeFrameNotification, object: nil)

调用此函数以检查并向上滚动tableView。// MARK:-键盘检查

 @objc func keyboard(notification:Notification) {
        if notification.name == UIResponder.keyboardWillShowNotification ||  notification.name == UIResponder.keyboardWillChangeFrameNotification {
           self.view.frame.origin.y = -15
        }else{
            self.view.frame.origin.y = 0
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.