Поскольку в представлении прокрутки имеется несколько представлений коллекции, возможно, что обновление для обновления не запускается при просмотре прокрутки (может быть в представлении коллекции, так как имеется несколько представлений коллекции)
Возможная причинаПочему didPullToRefresh
метод не вызывается?
Вы добавили UIRefreshControl
в scrollview.Поэтому, когда вы опускаете представление, оно является представлением коллекции (я думаю, что это не прокрутка).Вот почему «обновление» никогда не печатается.
Как определить, какой вид извлекается для обновления?
Допустим, у вас есть 2 коллекциипросмотр и 1 прокрутка на себя.поэтому добавьте UIRefreshControl
во все виды, как показано ниже ...
//add refresh control on collection view 1
let refreshController1 = UIRefreshControl(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 30))
refreshController1.addTarget(self, action: #selector(colView1Refreshed), for: .valueChanged)
collectionView1.refreshControl = refreshController1
//add refresh control on collection view 2
let refreshController2 = UIRefreshControl(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 30))
refreshController2.addTarget(self, action: #selector(colView2Refreshed), for: .valueChanged)
collectionView2.refreshControl = refreshController2
//add refresh control on scrollview
let refreshController3 = UIRefreshControl(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 30))
refreshController3.addTarget(self, action: #selector(scrollViewRefreshed), for: .valueChanged)
scrollView.refreshControl = refreshController3
, а затем реализуйте эти методы, чтобы проверить, какой вид извлекается.
@objc func colView1Refreshed() {
print("collection view 1 pulled")
}
@objc func colView2Refreshed() {
print("collection view 2 pulled")
}
@objc func scrollViewRefreshed() {
print("collection view 3 pulled")
}
Таким образом, вы можете определитькакое действие элемента управления обновлением запускается.
ПРИМЕЧАНИЕ. Приведенный выше код является лишь примером.Если у вас более 2 видов коллекции, вам нужно добавить UIRefreshControl
на все остальные виды, чтобы обнаружить его.