Возникли проблемы с UIPageControl и scrollViewDidScroll

Я пытаюсь запустить метод, когда _pageControl.currentPage находится на точном номере страницы, но проблема в том, что когда пользователь переходит на другую страницу, компилятор обнаруживает новую страницу, пока она еще прокручивается! Мне нужно использовать мой метод при прокрутке! вот мои коды:

- (void)setupPageScroll {

    _pageControl.currentPage = 0;
    _pageControl.numberOfPages = 5;
    [_scrollView setContentSize:CGSizeMake(_scrollView.frame.size.width * _pageControl.numberOfPages, _scrollView.frame.size.width)];
    _scrollView.delegate = self;

    [self createPageWithView:_logo forPage:0];
    [self createPageWithView:_news forPage:1];

}

- (void)createPageWithView:(UIView *)iview forPage:(int)page
{


    UIView *newView = [[UIView alloc] initWithFrame:
                       CGRectMake(_scrollView.frame.size.width * page, 0, _scrollView.frame.size.width, _scrollView.frame.size.height)];
    [newView addSubview:iview];
    [_scrollView addSubview:newView];
}




- (IBAction)pageChanged:(id)sender {
    CGRect pageRect = CGRectMake(_pageControl.currentPage * _scrollView.frame.size.width, 0, _scrollView.frame.size.width, _scrollView.frame.size.height);
    [_scrollView scrollRectToVisible: pageRect animated: YES];

}

- (void)scrollViewDidScroll: (UIScrollView *) sView
{



    CGFloat offset = _scrollView.contentOffset.x;
    CGFloat pageSize = _scrollView.frame.size.width;
    int page = floor((offset + (pageSize/2)) / pageSize);
    _pageControl.currentPage = page;

    switch (_pageControl.currentPage) {

        case 0:
                   NSLog(@"1");
         break;

        case 1:
                 NSLog(@"2");
        break;



    default:

        break;

    }

}

вот результат компилятора:

2014-08-27 13: 48: 35.344 TADAEX [45131: 60b] 1 2014-08-27 13: 48: 35.361 TADAEX [45131: 60b] 1 2014-08-27 13: 48: 35.378 TADAEX [45131: 60b] 1 2014-08-27 13: 48: 37.248 TADAEX [45131: 60b] 1 2014-08-27 13: 48: 37.265 TADAEX [45131: 60b] 1 2014-08-27 13: 48: 37.282 TADAEX [45131: 60b ] 1 2014-08-27 13: 48: 37.299 TADAEX [45131: 60b] 2 2014-08-27 13: 48: 38.076 TADAEX [45131: 60b] 2 2014-08-27 13: 48: 38.076 TADAEX [45131: 60b] 2 2014-08-27 13: 48: 38.076 TADAEX [45131: 60b] 2 2014-08-27 13: 48: 38.076 TADAEX [45131: 60b] 2 2014-08-27 13: 48: 38.076 TADAEX [45131: 60b] 2

как видите, компилятор повторяет NSLog выход! не когда pageControl находится на точном номере страницы.

1 ответ

Решение

Вы можете сделать это в этом методе делегата

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//Tells the delegate that the scroll view has ended decelerating the scrolling movement.
}
Другие вопросы по тегам