2014-08-27 4 views
0

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

- (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 ТАДАЭКС [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

Да, это нормально. scrollViewDidScroll запускается во время прокрутки пользователя. – idmean

+0

Лучшая опция - использование if - else вместо случая Switch. вы можете сделать это, если (page == 1) -> NSLog (@ "1"); – Mohit

ответ

2

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

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
//Tells the delegate that the scroll view has ended decelerating the scrolling movement. 
} 
+0

Спасибо .... .... –

+0

Добро пожаловать ......... – Rajesh