问题描述
这里我有一个 pagecontrol 效果很好,但是点击点它不会改变页面所以请帮助 changepage 的功能:
Here I have a pagecontrol which works good but on clicking on dot it doesn't change the page so please help in the function of changepage:
- (void)viewDidLoad { scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 420)]; scrollView.delegate = self; [self.scrollView setBackgroundColor:[UIColor whiteColor]]; [scrollView setCanCancelContentTouches:NO]; scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; scrollView.clipsToBounds = YES; scrollView.scrollEnabled = YES; [scrollView setShowsHorizontalScrollIndicator:NO]; scrollView.pagingEnabled = YES; [self.view addSubview:scrollView]; pageControl=[[UIPageControl alloc]initWithFrame:CGRectMake(0, 420, 320, 40)]; [pageControl addTarget:self action:@selector(changepage:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:pageControl]; UIView *blueView = [[UIView alloc] init]; blueView.frame = CGRectMake(0, 0, 640, 480); blueView.backgroundColor = [UIColor whiteColor]; [scrollView addSubview:blueView]; self.pageControl.numberOfPages = 2; [scrollView setContentSize:CGSizeMake(640, 0)]; } -(void)changepage:(id)sender { int page = pageControl.currentPage; if (page < 0) return; if (page >= 2) return; CGRect frame = scrollView.frame; frame.origin.x = frame.size.width * page; frame.origin.y = 0; [scrollView scrollRectToVisible:frame animated:YES]; } - (void)scrollViewDidScroll:(UIScrollView *)_scrollView { if (pageControlIsChangingPage) return; CGFloat pageWidth = _scrollView.frame.size.width; int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; pageControl.currentPage = page; }
推荐答案
可以创建一个事件变更页面:
You can create one event change page:
- (IBAction)changePage:(id)sender { UIPageControl *pager=sender; int page = pager.currentPage; CGRect frame = imageGrid_scrollView.frame; frame.origin.x = frame.size.width * page; frame.origin.y = 0; [imageGrid_scrollView scrollRectToVisible:frame animated:YES]; }
将其绑定到 Pagecontrol 的值更改事件.
Bind it to Pagecontrol's value changed event.