2012-02-25 15 views
26

Mam UIScrollView. Wartość scrollview.contentSize jest ustawiona na wysokość wszystkich subviews w UIScrollView. Gdy wysokość contentSize jest większa niż wysokość UIScrollView, jest idealnie przewijana podczas przeciągania widoku. Gdy wysokość contentSize jest mniejsza niż wysokość UIScrollView nic się nie dzieje podczas przeciągania widoku.Jak zawsze można przewijać UIScrollView?

Myślę, że to standardowe zachowanie, ponieważ naprawdę nie ma niczego do przewinięcia. Ale chciałbym, żeby i tak UIScrollView trochę się poruszyło.

Możliwym rozwiązaniem jest, aby upewnić się, że wysokość contentSize jest nie mniejsza niż frame.height plus małym marginesem (tj 5px):

CGSize scrollSize = self.frame.size; 
int defaultHeight = self.frame.size.height + 5; 
int contentHeight = self.webView.frame.origin.y + self.webView.frame.size.height; 
scrollSize.height = MAX(defaultHeight, contentHeight); 
[self.scrollView setContentSize:scrollSize]; 

Czy istnieje mniej hackish sposobem, aby to zrobić ?

+0

Czy po prostu chcesz go odbić? – jrtc27

+0

Zakładam, że próbowałeś ręcznie ustawić 'scrollEnabled' na' YES', prawda? – dasblinkenlight

+0

Tak, chcę tylko, żeby się odbił - i tak, 'scrollEnabled = YES' nie działał. – dhrm

Odpowiedz

71

Istnieją dwie właściwości na UIScrollView, które brzmią jak to, co chcesz:

@property(nonatomic) BOOL alwaysBounceVertical; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically 
@property(nonatomic) BOOL alwaysBounceHorizontal; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally 

Wystarczy ustawić jedną lub obie z nich YES a otrzymasz efekt odrzuceń.

Można to również ustawić w IB, zaznaczając "Bounce poziomo" i/lub "Bounce pionie" box (s):

enter image description here

+4

Należy zaznaczyć, że pole wyboru solo "Odrzuć" musi być zaznaczone oprócz "Odbicie w poziomie" lub "Odbicie w pionie". –

Powiązane problemy