2014-05-20 8 views
9

Quando eseguo lentamente l'aggiornamento per aggiornare, vedo che il cerchio di UIActivityIndicator diventa lentamente più completo prima di avviare l'aggiornamento. Poco prima che il cerchio sia completato e il refresh si innesca effettivamente, il contenuto salta/scappa e poi il cerchio inizia a girare. L'ho notato solo quando mi abbasso lentamente.Pull to Refresh Jump in iOS

sto usando la spinta per aggiornare all'interno di una vista di scorrimento chiamato mainSV

self.refresh = [[UIRefreshControl alloc] init]; 
    [self.refresh addTarget:self action:@selector(handleRefresh) forControlEvents:UIControlEventValueChanged]; 
    [self.mainSV addSubview:self.refresh]; 

Perché questo salto/coglione accadere?

+0

Stai usando gli storyboard? Qual è il tuo target iOS? – andrewbuilder

+0

Ho un tabellone principale. La vista di scorrimento è in uno xib. Ho appena notato che questo non è un problema in iOS 6, salta solo in iOS 7. – tcox

+0

'refresh' cambiato tra iOS 6 e 7. Ti fornirò una risposta ... – andrewbuilder

risposta

8

Probabilmente è un bug in iOS. La tua configurazione è corretta e vedo la stessa cosa nella mia app.

5

Sospetto che il salto/strappo sia dovuto a un'azione "doppia".

C'è stato un cambiamento di refresh attuazione seguito del rilascio di Xcode 5.

Come tale, il requisito per impostare un'azione di destinazione come descritto nella non è più necessario.

Come si utilizza uno Storyboard, nel file Interface Builder/Storyboard, selezionare la scena storyboard (controller visualizzazione tabella).

Nell'ispettore attributi, nella sottovoce Controller vista tabella, selezionare la voce "Aggiornamento" e modificare l'impostazione da "Disabilitato" a "Abilitato".

Attribute Inspector for Table View Controller

Eliminare o commentare le tre righe di codice che avete inserito nella sua interrogazione. (Quando è stato richiesto, vale a dire prima di Xcode 5, ho messo questo codice nel mio viewDidLoad metodo del ciclo di vita TVC.)

Se non è inserito automaticamente nel codice, quindi aggiungere questo sia come pubblico o privato IBAction ...

- (IBAction)refresh:(UIRefreshControl *)sender; 

e filo alla vista scena/tavola controller al evento inviato "valore modificato".

Visual representation of outlet connection

Assicurarsi che l'azione di aggiornamento è configurato correttamente ...

- (IBAction)refresh:(UIRefreshControl *)sender { 
    [self.refreshControl beginRefreshing]; 

    // Refresh code for your TVC 

    [self.refreshControl endRefreshing]; 
} 

noti che nessuna proprietà è necessario per essere impostato per refreshControl - Sospetto che ci sia un trigger per sintetizzare automaticamente questo quando si scegli l'impostazione Aggiornamento [Abilitato] negli attributi TVC nello storyboard.

Se è necessario chiamare l'aggiornamento da nel codice, utilizzare questa linea ...

[self refresh:self.refreshControl]; 
+4

Se ho capito bene - questo funziona solo per una sottoclasse di 'UITableViewController'? Ma non per 'UITableView' all'interno di' UIViewController'? – oyatek

+1

Ho ancora un sobbalzo quando eseguo questo modo :( – lostintranslation

+0

@oyatek per [Apple docs] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIRefreshControl_class/) sei corretto, il controllo di aggiornamento è specificamente progettato per l'utilizzo in una vista tabella gestita da un controller di visualizzazione tabella. Non sono sicuro di dove sia menzionata la seconda opzione nella domanda? – andrewbuilder

1

avrei bisogno di vedere il resto del codice (o almeno i metodi rinfrescanti scorrimento +) per diagnosticare il problema.

Ecco il nostro tutorial per l'implementazione di pull personalizzati per aggiornare i controlli in ogg-c e swift. Se segui questo tutorial non dovresti vedere alcun salto o strappi.

http://www.jackrabbitmobile.com/design/ios-custom-pull-to-refresh-control/

Speranza che aiuta!