Zrobiłem wystarczająco google, & Sprawdziłem posty takie jak te (Finding the direction of scrolling in a UIScrollView?) w stackoverflow przed opublikowaniem tego. Mam dynamiczną liczbę zdjęć w aplikacji na iPhone'a, które wyświetlają się przez UIScrollView
. W dowolnym momencie mam tylko 3 zdjęcia wyświetlane w widoku przewijania. Kiedy mam, powiedzmy 4 zdjęcia, w sumie: 1-ty fot wyświetlane na przesunięcie 0,0 2nd zdjęcie: wyświetlany na przesunięcie 320,0 3-ty fot wyświetlane na przesunięcie 640,0Wykryj kierunek UIScrollView przewiń w scrollViewWillBeginDragging
Teraz, gdy użytkownik przewija do 4 zdjęcie, widok przewijania resetuje się do przesunięcia 0.0. Jeśli użytkownik spróbuje przewinąć "poza" czwartą fotografię, przewijanie powinno zatrzymać się tylko we właściwym kierunku (aby użytkownik nie przewijał "poza"). Ale obecnie użytkownik "jest w stanie" przewinąć poza ostatnie zdjęcie; jednak wykrywam to programowo & resetowanie przesunięcia. Ale nie wygląda schludnie, ponieważ użytkownik widzi na chwilę czarne tło. Chcę wykryć, że użytkownik zaczął przewijanie "w prawo" (pamiętaj, przewijanie "w lewo", tj. Do "poprzedniego" zdjęcia jest w porządku) w scrollViewWillBeginDragging
, dzięki czemu mogę zatrzymać dalsze przewijanie w prawo.
Co próbowałem: (!)
- Próba korzystania
self.scrollView.panGestureRecognizer
„stranslationInView
nie działa, ponieważ nie mapanGestureRecognizer
wystąpienie zwrócony w pierwszej kolejności, choć API UIScrollView tak twierdzi. - Wykrywanie tego w
scrollViewDidEndDecelerating
jest możliwe, chociaż nie będzie to służyć mojemu celowi.
Mógłbyś rozwinąć lastContentOffset – Daniel
@Daniel musisz zapisać "ostatnie przesunięcie zawartości", które jest poprzednim contentOffset od ostatniego wywołania tej metody. Nie wiem, dlaczego Jean o tym zapomniał. Po prostu dodaj lastContentOffset jako zmienną statyczną u góry, a następnie ustaw ją na końcu metody. –