cannyboy
cannyboy

Reputation: 24416

How to page-scroll on a uiscrollview?

If I've got a uiscrollview which is five pages wide, what code would tell me what page I am on, when I scroll to a new page? Also, what code would scroll to a specific page?

Thanks!

Upvotes: 0

Views: 1608

Answers (3)

Nitin Alabur
Nitin Alabur

Reputation: 5812

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    CGFloat pageWidth = scrollView.frame.size.width;
    int currentPage = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage = currentPage;
}

I have the scrollview frame width as the page width. If you are using something else as page width, make respective changes to get this to work

for scrolling to current page - if I understand it right, you have an option to enter page number and choose to scroll to that page:

Just the code above, do it reverse order, and solve for contentOffset.X

once you have the x value, create a frame with that x in it, and scrollToRect: animated: will do the work.

Upvotes: 1

emran
emran

Reputation: 922

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat scroller_x = [scrollView contentOffset].x;
CGFloat scroller_y = [scrollView contentOffset].y;
NSLog(@"%f, %f",scroller_x,scroller_y);
}

Once this delegate method fires (on scroll) check it against each views frame.origin.x and frame.origin.y The view's frame that matches will be the view that you scrolled to.

[scrollView setContentOffset:<#(CGPoint)#>];

use this method to scroll to a specific view.frame.origin. So suppose you have an action to go to a specific view, you can use [scrollView setContentOffset:view.frame.origin] to get there.

(assumed paging is enabled)

Upvotes: 0

iwasrobbed
iwasrobbed

Reputation: 46703

Check out the PageControl example from Apple:

http://developer.apple.com/iphone/library/samplecode/PageControl/Listings/ReadMe_txt.html

Upvotes: 0

Related Questions