2013-06-25 9 views
7

Ho un UICollectionView. Ogni cella contiene un UITextField. Voglio una richiamata quando la visualizzazione è completa, quindi posso interrogare un oggetto modello per il quale textField dovrebbe essere il firstResponder, quindi renderlo il firstResponder. Posso ottenere quella richiamata? O c'è un altro modo naturale per realizzare questo?UICollectionView: ricevi una richiamata al termine del caricamento?

+0

provare questa soluzione, ci si sente più pulito: http://stackoverflow.com/a/39425374/2664531 risposta – Darko

risposta

10

Se si invia il messaggio layoutIfNeeded alla vista raccolta, aggiornerà i propri figli (aggiungendo ed eliminando le celle se necessario) prima di tornare. In questo modo è possibile aggiornarlo in modo sincrono, quindi eseguire le azioni di post-ricarica.

[myCollectionView layoutIfNeeded]; 
[self chooseFirstResponderFromCells:myCollectionView.visibleCells]; 
+0

di architectpianist può (o non può) essere meglio per voi, a seconda della situazione. –

+0

Le tue risposte su UICollectionView sono davvero utili! –

+0

avevo bisogno di chiamare il 'collectionView.collectionViewLayout.invalidateLayout()', allora perché in qualche modo la CollectionView stato erroneamente disposto dopo programmazione scorrimento ('' setContentOffset' o scrollToItemAtIndexPath') –

0

mai provato, ma si potrebbe farlo inserendo il codice in

dequeueReusableCellWithReuseIdentifier:forIndexPath: 

per ottenere il conteggio delle celle visibili (forse [contano visibleCells]), allora il monitoraggio quanti sono stati effettivamente trasformato, quindi rendendo il callback dopo tutto sono stati visualizzati. Dovresti comunque resettare il conteggio tra gli scroll.

Non pulito, ma dovrebbe funzionare. Non conosco alcun modo per ottenere una richiamata al di sotto di quello.

5

Per quanto riguarda un metodo di callback reale, non credo che ci sia una per la vista raccolta carico. L'unico che conosco è , e questo è abbastanza estraneo. Nella mia esperienza, tuttavia, le viste di raccolta sono caricate e pronte per il momento in cui viene chiamato il numero viewDidAppear, quindi impostarei il primo risponditore lì.

Spero che questo aiuti!

Problemi correlati