iphone - 使用按钮更改页面控件

标签 iphone objective-c ios

我有一个简单的页面控件设置了两个不同的页面。我有一个名为 nextButton 的按钮,如果用户点击该按钮,我想更改页面并滚动到下一页。

我的页面控件工作正常,我可以滚动更改页面,但按钮根本不起作用。它正在被调用。

- (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];
}

最佳答案

尝试这样的事情:

 - (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];

  }

请注意该代码中的 +1。之前,您实际上是将内容偏移量精确地设置为等于原始偏移量,因为您只是获取页面控件的值。

关于iphone - 使用按钮更改页面控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10058952/

相关文章:

ios - 尝试在已经呈现的 View Controller 上呈现 UIAlertController(空)[Swift]

objective-c - NSTable 和 NSMutableArray 排序

ios - UIPickerView 内部静态 UITableViewCell 动画中单元格高度更新问题

iphone - 使用 CAShape Layer 绘制两条平行线

iphone - iOS 中的 System.IO.Path 等价物

iphone - 释放包含 NSDictionary 对象的 NSArray

iphone - -[__NSPlaceholderArray initWithObjects :count:]: attempt to insert nil object from objects[0]'

ios - 通过 Url Scheme 重新打开 iOS 应用程序 - 状态保存

objective-c - 使用 NSPredicate 搜索对象数组

android - 将 Sprite 矩形旋转 90 度不符合 iOS 中的纵横比