views:

4655

answers:

4

I have a UIScrollView that shows vertical data, but where the horizontal component is no wider than the screen of the iPhone. The problem is that the user is still able to drag horizontally, and basically expose blank sections of the UI. I have tried setting:

scrollView.alwaysBounceHorizontal = NO;
scrollView.directionalLockEnabled = YES;

Which helps a little, but still doesn't stop the user from being able to drag horizontally. Surely there is a way to fix this easily?

A: 

Try setting scrollView.bounces to NO and scrollView.alwaysBounceVertical to YES.

Darron
That's half way there, now it scrolls vertically, but never horizontally, but no longer bounces vertically...it would be nice if it could still bounce vertically, as it seems unatural to scroll without that bounce on the iPhone.
rustyshelf
+2  A: 

That's strange, because whenever I create a scroll view with frame and content size within the bounds of the screen on either dimension, the scroll view does not scroll (or bounce) in that direction.

// Should scroll vertically but not horizontally
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
scrollView.contentSize = CGSizeMake(320, 1000);

Are you sure the frame fits completely within the screen and contentSize's width is not greater than the scroll view's width?

Mike McMaster
I had the wrong scrollView.contentSize...thanks!
rustyshelf
+1  A: 

Make sure the UIScrollView's contentSize is not wider than the UIScrollView itself. In my own apps this was enough to avoid horizontal scrolling, except in cases where I got really crazy swiping in random directions (e.g., starting a scroll while the view was still decelerating).

benzado
A: 

Something to keep in mind: You know there's nothing extra to see horizontally, but will your users know that? You may want a little horizontal bounce, even if there's no extra content to show horizontally. This let's the user know that their attempts to scroll horizontally are not being ignored, there's just nothing there for them to see. But, yeah, often you really don't want the bounce.

spotcatbug