A UIScrollView
z włączoną obsługą stronicowania zatrzyma się na wielokrotnościach jego szerokości (lub wysokości) ramki. Pierwszym krokiem jest ustalenie, jak szerokie mają być twoje strony. Ustaw szerokość UIScrollView
. Następnie ustaw wymiary swojego podarchiplagania, jakkolwiek są one potrzebne, i ustaw ich centra na podstawie wielokrotności szerokości UIScrollView
.
Następnie, ponieważ chcesz zobaczyć inne strony, oczywiście, ustaw clipsToBounds
na NO
jak mhjoy stwierdził. W tej chwili sztuczka polega na przewijaniu, gdy użytkownik rozpoczyna przeciąganie poza zasięg ramki UIScrollView
. Moje rozwiązanie (gdy musiałem zrobić to bardzo niedawno) był następujący:
Tworzenie UIView
podklasy (tj ClipView
), który będzie zawierał UIScrollView
i to subviews. Zasadniczo powinien on mieć ramy tego, co można by założyć, że w normalnych okolicznościach miałoby to być UIScrollView
. Umieść UIScrollView
w środku ClipView
. Upewnij się, że 's clipsToBounds
jest ustawiony na YES
, jeśli jego szerokość jest mniejsza niż w widoku nadrzędnym. Ponadto, ClipView
wymaga odniesienia do UIScrollView
.
Ostatnim krokiem jest zastąpienie - (UIView *)hitTest:withEvent:
wewnątrz ClipView
.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [self pointInside:point withEvent:event] ? scrollView : nil;
}
To zasadniczo rozszerza dotykowy obszar UIScrollView
do ramy widzenia jego rodzica, dokładnie to, czego potrzebują.
Innym rozwiązaniem byłoby podklasy UIScrollView
i zastąpić swoją metodę - (BOOL)pointInside:(CGPoint) point withEvent:(UIEvent *) event
, jednak trzeba jeszcze widok kontenera zrobić wycinek, a to może być trudne do określenia, kiedy powrócić YES
opartą wyłącznie na ramie UIScrollView
„s.
UWAGA:Należy również przyjrzeć się Juri Pakaste na hitTest:withEvent: modification jeśli masz problemy z interakcji użytkownika subview.
Tylko myśl ...spróbuj ustawić granice widoku przewijania na mniejsze niż na ekranie, a następnie poćwicz z poprawnym wyświetlaniem widoków. (i ustaw klipy na klipy na NO) – mjhoy
Chciałem mieć strony większe od szerokości widoku uiscroll (przewijanie poziome). A myśl mjhoya naprawdę mi pomogła! – Sasho
Powiązany jest [Paging UIScrollView w przyrostach mniejszych niż rozmiar zawartości] (http://stackoverflow.com/q/1677085/590956). – Sam