UIRefreshController просматривает UICollectionView
Это ошибка, которая происходит часто, но не всегда. У меня есть элемент управления обновлением, добавленный в мой UICollectionView. Когда я обновляюсь, он работает отлично. Однако, если я половину обновляю его несколько раз или даже делаю полное обновление, перейдите на другую вкладку в приложении, а затем вернитесь назад, когда я обновляюсь, UIRefreshControl появляется над частью UICollectionView. Кроме того, вместо того, чтобы начинать с нулевых обновляющих баров, он начинается со всех загруженных (я упоминал об этом в других приложениях, таких как Mail, так что это большая ошибка ОС, но в приложениях ОС прядильщик не переходит Контент).
Вот изображение проблемы: https://www.dropbox.com/s/4qk6qjrdlapsvz0/IMG_0074.JPG
Вот как я настроил RefreshController в ViewDidLoad.
refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh2)
forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:refreshControl];
self.collectionView.alwaysBounceVertical = YES;
Кто-нибудь знает, как заставить spinner пойти за CollectionViewController? Благодаря
Ответы
Ответ 1
У меня тоже была эта проблема, и я понял, что решил поделиться. то, что я сделал, это заставить его вернуться в UICollectionView. Я пробовал другие вещи, такие как sendSubViewToBack и установил zIndex из UICollectionViewCell, но он не работал. Однако ниже работала, и я тестировал на iOS 6 +:
refreshControl.layer.zPosition = -1;
Для iOS 6 добавьте следующее:
refreshControl.userInteractionEnabled = NO;
Ответ 2
Проблема:
Вы начинаете прокручивать вниз и частично показывать UIRefreshControl, но вы не прокручиваете весь путь вниз, чтобы заставить его начать вращаться. Вы переходите к другому представлению (или "сворачиваете" приложение, отправляете на задний план) и возвращаетесь. Вы немного прокручиваетесь, и UIRefreshControl показывает сверху вашего коллекционного просмотра, полностью загруженного, не приветствуемого и не вращающегося.
Решение:
Вам нужно endRefreshing в viewWillDissappear и приложению, отправляемом на задний план.
var refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
refreshControl.addTarget(self, action: #selector(ViewController.methodNameForRefreshing), forControlEvents: .ValueChanged)
collectionView.addSubview(refreshControl)
//or
tableView.addSubview(refreshControl)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.willResignActiveNotif), name: UIApplicationWillResignActiveNotification, object: nil)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
refreshControl.endRefreshing()
}
func willResignActiveNotif(notification: NSNotification) {
refreshControl.endRefreshing()
}