Also die meisten Probleme, die Menschen mit diesem bestimmten Ereignis haben, ist scrollViewDidScroll
Feuer, wenn es Animation passiert. Mein Fall ist genau das Gegenteil. Ich glaube, dass scrollViewDidScroll
in meinem Fall nicht feuern sollte.UITableView scrollViewDidScroll gefeuert auf Animation
Lassen Sie mich weiter erklären.
Ich bin Dinge in ScrollViewDidScroll animieren und das funktionierte einwandfrei, bis ich UITableView in eine UIView-Klasse verschoben.
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
// Animation code here.
NSLog(@"scrollViewDidScroll");
}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"scrollViewDidEndDecelerating");
NSArray *indexPaths = [_myTableView indexPathsForVisibleRows];
[_myTableView scrollToRowAtIndexPath:[indexPaths objectAtIndex:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
Was bietet eine gleichmäßige Scrollen Erfahrung, die zu einer vorherigen Tabellenzeile einrastet. Die Konsole kann verifizieren, dass das Ereignis scrollViewDidScroll
wegen scrollToRowAtIndexPath
ausgelöst wird.
Console:
2014-03-31 22:21:43.346 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.379 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.429 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.462 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.479 Project[45843:a0b] scrollViewDidEndDecelerating
2014-03-31 22:21:43.496 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.513 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.529 Project[45843:a0b] scrollViewDidScroll
auf die Fragen:
1. Wie kann ich sicherstellen, dass die Veranstaltung scrollViewDidScroll
nur Brände aufgrund Interaktion des Benutzers und nicht von Code Automatisierung?
2. Gibt es eine andere Methode, die die gleiche Funktionalität wie scrollToRowAtIndexPath
ohne Triggerung scrollViewDidScroll
bietet?
Wie pro meines Wissens progammatically wollen unterscheiden Scrollen, können Sie nicht ohne Delegatmethode blättern aufgerufen wird . Eine Sache, die Sie tun können, ist, indem Sie programmgesteuert scrollen, können Sie eine Markierung setzen und sie in der Delegiertenmethode verwenden. Wenn Sie programmgesteuert scrollen, setzen Sie das Flag zurück. Ich hoffe, dass dir das weiterhilft .. –