Pergunta

Este é um bug que acontece com frequência, mas nem sempre.Eu tenho um controle de atualização adicionado ao meu UICollectionView.Quando atualizo, funciona perfeitamente.No entanto, se eu atualizá-lo pela metade várias vezes ou até mesmo fazer uma atualização completa, vá para outra guia no aplicativo e depois retorne, quando eu atualizar, o UIRefreshControl aparecerá sobre parte do UICollectionView.Além disso, em vez de começar com zero barras giratórias de atualização, ele começa com tudo carregado (no entanto, percebi isso em outros aplicativos, como o Mail, então isso é um bug do sistema operacional, mas nos aplicativos do sistema operacional, o botão giratório não passa por cima o conteúdo).Aqui está uma imagem do problema: https://www.dropbox.com/s/4qk6qjrdlapsvz0/IMG_0074.JPGVeja como configuro o RefreshController no ViewDidLoad.

refreshControl = [[UIRefreshControl alloc] init];

[refreshControl addTarget:self action:@selector(refresh2)

forControlEvents:UIControlEventValueChanged];

[self.collectionView addSubview:refreshControl];

self.collectionView.alwaysBounceVertical = YES;

Alguém sabe como fazer o spinner ficar atrás do CollectionViewController?Obrigado

Foi útil?

Solução

Eu também tive esse problema e descobri, então pensei em compartilhar.o que fiz foi forçá-lo para trás do UICollectionView.Eu tentei outras coisas como sendSubViewToBack e definir o zIndex do UICollectionViewCell, mas não funcionou.Porém abaixo funcionou e testei no iOS 6+:

refreshControl.layer.zPosition = -1;

Para iOS 6, adicione isto:

refreshControl.userInteractionEnabled = NO;

Outras dicas

Problema:Você começa a rolar para baixo e revela parcialmente o UIRefreshControl, mas não rola totalmente para baixo para fazê-lo começar a girar.Você navega para outra visualização (ou "minimiza" o aplicativo, envia para segundo plano) e volta.Você rola um pouco e o UIRefreshControl aparece no topo da sua coleção, totalmente carregado, indesejado e sem girar.

Solução:Você precisa finalizar a atualização no viewWillDissappear e no aplicativo sendo enviado para segundo plano.

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()
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top