UIScrollView Benachrichtigungen
-
25-09-2019 - |
Frage
Ich bin Codierung eine App, die viel wie Apples Weather.app funktioniert: Es gibt eine UIPageControl am Boden und ein UIScrollView in der Mitte des Bildschirms.
In meinem Code implementierte ich die - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
Methode, um herauszufinden, wenn der Benutzer Umzug in eine neue Seite tat. Wenn sie auf eine neue Seite zu verschieben, lade ich die Daten der benachbarten Seiten als weitere Seite vermittelnde schneller zu machen. (In einem von Apple Beispielen wird die - (void)scrollViewDidScroll:(UIScrollView *)sender
verwendet, aber das bewirkt, dass mein App in Kürze hängen, wenn eine neue Seite geladen wird, so dass es nicht geeignet ist.)
Dieser Code funktioniert sehr gut.
Ich verwende scrollRectToVisible:
: programmatisch innerhalb des Scroll scrollen, wenn der Benutzer die UIPageControl klickt. Das Problem ist, dass der scrollRectToVisible:
nicht eine Benachrichtigung an die UIScrollViewDelegate nicht posten, wenn es Scrollen getan -. So den Code verantwortlich für das Laden benachbarte Seiten nie die aufgerufen werden, wenn die UIPageControl mit
Gibt es eine Möglichkeit die UIScrollView benachrichtigen seine Delegierten zu machen, wenn es durch die scrollRectToVisible:
Methode aufgerufen wird? Oder muss ich zu verwenden Threads, um meine Anwendung zu verhindern, dass das Einfrieren?
Danke!
- Ry
Lösung
Wie wäre es? -scrollViewDidEndScrollingAnimation:
?
Wenn es nicht funktioniert, versuchen Sie, die UITextSelectionDidScroll
Benachrichtigung zu hören. (Natürlich ist es nicht dokumentiert.)
Alternativ kann eine SDK-sichere Methode ist, die Zeit für die Animation genommen messen und eine verzögerte Benachrichtigung an der Aufrufstelle von -scrollRectToVisible:
senden.
Andere Tipps
Sie können diese Delegatmethode hinzufügen:
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
Die Scroll-Ansicht ruft diese Methode am Ende seiner Ausführungen des UIScrollView und setContentOffset: animierte: und scrollRectToVisible: animiert. Methoden, aber nur, wenn Animationen werden gebeten,