Swift 搜索时停用UIRefreshControl

Swift 搜索时停用UIRefreshControl,swift,uisearchcontroller,uirefreshcontrol,Swift,Uisearchcontroller,Uirefreshcontrol,我在TableView上实现了UIRefreshControl,此外,我还添加了一个带有搜索栏的searchController 搜索和拉刷新都可以很好地工作,我唯一要做的就是在searchController处于活动状态时如何停用“拉刷新”功能 我试图实现这个解决方案,但不知何故,这对我来说并不奏效 使您的viewcontroller符合UISearchBarDelegate class ViewController: UIViewController, UISearchBarDelegate

我在TableView上实现了UIRefreshControl,此外,我还添加了一个带有搜索栏的searchController

搜索和拉刷新都可以很好地工作,我唯一要做的就是在searchController处于活动状态时如何停用“拉刷新”功能


我试图实现这个解决方案,但不知何故,这对我来说并不奏效

使您的viewcontroller符合
UISearchBarDelegate

class ViewController: UIViewController, UISearchBarDelegate
并实现了其中的两种方法

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    self.removeRefreshControl()        
}

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
    self.initRefreshControl()
}
在每个方法中,调用函数来设置和删除
UIRefreshControl

func initRefreshControl() {
    self.refreshControl = UIRefreshControl()
    self.refreshControl?.addTarget(self, action: #selector(ViewController.refreshData), for: .valueChanged)

    self.tableView.refreshControl = self.refreshControl
}

func removeRefreshControl() {
    self.refreshControl = nil
}
完整的代码是:

class ViewController: UIViewController, UISearchBarDelegate {

    @IBOutlet weak var tableView: UITableView!

    @IBOutlet weak var searchBar: UISearchBar!

    var refreshControl: UIRefreshControl?

    override func viewDidLoad() {
        super.viewDidLoad()
        self.initRefreshControl()
    }

    func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
        self.removeRefreshControl()
    }

    func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
        self.initRefreshControl()
    }

    func initRefreshControl() {
        self.refreshControl = UIRefreshControl()
        self.refreshControl?.addTarget(self, action: #selector(ViewController.refreshData), for: .valueChanged)

        self.tableView.refreshControl = self.refreshControl
    }

    func removeRefreshControl() {
        self.refreshControl = nil
    }

    @objc func refreshData() {
        ....
        ....
        self.refreshControl?.endRefreshing()
    }
}

这应该可以工作。

您希望不调用刷新控制目标函数还是隐藏刷新控制我希望两者都有。UIRefreshcontrol不应工作,也不应显示。