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()
}