Change Page Control With Button

ios, iphone, objective-c

Solution

Try something like this:

 - (IBAction)nextPage:(id)sender 
  {        
     NSInteger currentPage = self.pageControl.currentPage + 1;
     CGPoint offset = CGPointMake(currentPage * self.scrollView.frame.size.width, 0);
    [self.scrollView setContentOffset:offset animated:YES];
    pageControlUsed = YES;
 }

  - (IBAction)nextButton:(id)sender
  {
      [self nextPage:self];

  }

Notice the +1 in that code. Before, you were literally setting the content offset exactley equal to the original offset because you were just taking the value of the page control.

Problem

I have a simple page control set up with two different pages. I have a button called nextButton, and if the user hits that button, I want to change the page and scroll to the next page. My page control works, and I can scroll to change pages, but the button does not work at all. It is getting called though. ``` - (void)viewDidLoad { [super viewDidLoad]; self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * TUTORIALNUMBEROFPAGES, self.scrollView.frame.size.height); self.scrollView.pagingEnabled = YES; self.scrollView.showsHorizontalScrollIndicator = NO; self.scrollView.showsVerticalScrollIndicator = NO; self.scrollView.scrollsToTop = NO; self.scrollView.delegate = self; self.pageControl.numberOfPages = TUTORIALNUMBEROFPAGES; self.pageControl.currentPage = 0; CGRect pageFrame = self.scrollView.frame; pageFrame.origin.x = pageFrame.size.width * 0; pageFrame.origin.y = 0; self.pageOne.frame = pageFrame; [self.scrollView addSubview:self.pageOne]; pageFrame.origin.x = pageFrame.size.width * 1; self.pageTwo.frame = pageFrame; [self.scrollView addSubview:self.pageTwo]; } - (void)scrollViewDidScroll:(UIScrollView *)sender { if (pageControlUsed) { return; } CGFloat pageWidth = self.scrollView.frame.size.width; int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; self.pageControl.currentPage = page; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { pageControlUsed = NO; } - (IBAction)changePage:(id)sender { NSInteger currentPage = self.pageControl.currentPage; CGPoint offset = CGPointMake(currentPage * self.scrollView.frame.size.width, 0); [self.scrollView setContentOffset:offset animated:YES]; pageControlUsed = YES; } - (IBAction)nextButton:(id)sender { [self changePage:self]; } ```

Original source