2017-07-27 1 views
0

Ich habe UICollectionView-Zellen im Vollbildmodus (first-left -> last-right). Wenn ich zur letzten Zelle scrolle, überprüfe ich 3 Eigenschaften: isTracking, isDragging und isDecelerating. Wenn ich auf der letzten Zelle bin, ziehen Sie ein wenig nach links (um die vorherige Zelle zu sehen) und ziehen Sie dann (ohne den Finger zu heben) nach rechts (verankern Sie die Zelle). Beenden Sie die Touch und überprüfen Sie die Eigenschaften.UICollectionView: isDragging -Eigenschaft ist nicht im richtigen Zustand

Nach dieser Prozedur Zustand von Immobilien:

isTracking = NO; //false 
isDragging = YES; //true 
isDecelerating = NO; // false 

Das Problem ist, dass staatlicher isDragging für eine lange Zeit spart und während dieser Zeit UICollectingView zeigt ich in wahrem Zustand isDragging (aber niemand mit der Zelle interagieren). Ich brauche diese Eigenschaft, um zu verstehen, wann die Sammlung erneut geladen werden muss. Der Status wird erst nach dem erneuten Ziehen aktualisiert.

Die Frage ist also, wie kann ich meinen Code und das Verhalten der UICollectionView verbessern, um den richtigen Wert von der isDragging-Eigenschaft zu erhalten? Gibt es irgendwelche Möglichkeiten, diese CollecitonView im "ruhigen" Zustand zu verstehen?

P.S. Ich verwende klare native UICollectionView ohne benutzerdefinierte Klassen und Multithreading

Bearbeitet: Frage hinzugefügt "Gibt es ..." ruhig "Zustand?"

Antwort

1

Sie sollten keine Abfragen isTracking und isDragging zu erfahren, wenn eine Rolle vorbei ist. Verwenden Sie die Delegate-Methoden scrollViewDidEndDragging(_:willDecelerate:) und scrollViewDidEndDecelerating(_:).

+0

Ich verwende diese Methoden, aber in meinem Fall ist es keine Lösung, weil die Delegierten nach der Interaktion aufrufen. Die App lädt Daten aus dem Internet und ich möchte so schnell wie möglich neue Daten für den Benutzer anzeigen. Was ist, wenn der Benutzer für eine Minute oder länger in der Zelle bleibt, versuche ich während dieser Zeit CollectionView neu zu laden, aber der Dragging-Schlüssel zeigt mir, dass jemand mit den Zellen interagiert, bevor ich die CollectionView neu laden möchte ". Ofc Ich kann meine eigene bool-Variable den Methoden 'scrollViewDidEndDragging',' scrollViewWillBeginDragging' hinzufügen, aber es ist nicht die Lösung, nach der ich suche. –

+0

"App lädt Daten aus dem Internet und ich möchte so schnell wie möglich neue Daten für den Benutzer anzeigen." Das Problem ist, dass du in deiner Frage nichts davon gesagt hast. Im Grunde haben Sie die falsche Frage gestellt. Versuchen Sie, nach dem eigentlichen Problem zu fragen, nicht nach einem x-y-Problem. – matt

+0

Ihre Antwort ist eine Art Work-Around für echte iOS SDK-Problem. Wie ich oben erwähnte "Ich brauche diese Eigenschaft, um zu verstehen, wann die Sammlung neu geladen werden muss". Gibt es irgendwelche Möglichkeiten, diese Sammelansicht im "ruhigen" Zustand zu verstehen? –

Verwandte Themen