13 Stimmen

UIScrollView scrollRectToVisible:animated: Gibt es eine Möglichkeit, dass eine Methode aufgerufen werden kann, wenn die Animation endet

Gibt es eine Möglichkeit zu wissen, wann die Animation beendet ist und uiscrollview zum Stillstand gekommen ist.

21voto

Yogesh Agarwal Punkte 2593

13voto

bandejapaisa Punkte 25645

Ich tue es so, weil manchmal mit dem Delegaten ist nicht praktisch für mich, wie wenn ich es in UIViewController Übergang tun:

[UIView animateWithDuration:0.3 animations:^{
    [scrollView setContentOffset:CGPointMake(0, -scrollView.contentInset.top) animated:NO];
} completion:^(BOOL finished) {
    // This is called when it's complete
}];

5voto

Markus Rautopuro Punkte 7667

Umsetzung UIScrollViewDelegate delegieren Sie die Methoden für Ihre UIScrollView auf folgende Weise:

Utilice scrollViewDidEndScrollingAnimation: um zu erkennen, wann die Bildlaufanimation beendet ist, wenn Sie den Bildlauf durch den Aufruf setContentOffset:animated: oder scrollRectToVisible:animated: Methoden (mit animated:YES).

Wenn Sie die Bewegung der Bildlaufansicht überwachen möchten, die durch Berührungsgesten ausgelöst wurde, verwenden Sie scrollViewDidEndDecelerating: Methode, die aufgerufen wird, wenn der Bildlauf zum Stillstand kommt.

3voto

Fattie Punkte 34702

Sie müssen DREI (!) Fälle abdecken. Danke, Apple.

// do note that you need all three of the following

public func scrollViewDidEndScrollingAnimation(_ s: UIScrollView) {
    // covers case setContentOffset/scrollRectToVisible
    fingerOrProgrammaticMoveDone()
}

public func scrollViewDidEndDragging(_ s: UIScrollView, willDecelerate d: Bool) {
    if decelerate == false {
        // covers certain cases of user finger
        fingerOrProgrammaticMoveDone()
    }
}

public func scrollViewDidEndDecelerating(_ s: UIScrollView) {
    // covers certain cases of user finger
    fingerOrProgrammaticMoveDone()
}

(Achten Sie darauf, die zusätzliche "if"-Klausel in der Mitte nicht zu vergessen.)

Dann in fingerOrProgrammaticMoveDone() tun, was Sie brauchen.

Ein gutes Beispiel dafür ist der Alptraum der Handhabung des seitenweisen Scrollens. Es ist sehr, sehr schwierig, zu wissen, auf welcher Seite man sich befindet.

-2voto

Kyr Dunenkoff Punkte 8090

scrollViewDidEndDecelerating: Die UIScrollView-Delegate-Methode wird aufgerufen, wenn scrollView vollständig stoppt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X