2012-06-25 3 views
0

Это было немного интересное.UIScrollView Snapping with OpenGL GLKit

Итак, у меня есть экран OpenGl с прокруткой вверху. Я использую ссылку CADisplay для обновления рендера при прокрутке (код ниже), который работает очень хорошо.

Однако я не могу заставить его привязываться к точке (анимированной). Я считаю, что освобождение ссылки CADisplay останавливает анимацию scrollview (см. SnapToItem).

Я попытался отключить выпуск CADisplay через 2 секунды после этого, но это вызывает другие проблемы.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    moveFactor = 0 - (((self.scrollView.contentSize.height - self.scrollView.frame.size.height) - self.scrollView.contentOffset.y)/itemScrollViewMoveFactor); 
    [self updateLabelPositionScale]; 
} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    [self startDisplayLinkIfNeeded]; 
} 

- (void)snapToItem 
{ 
    NSLog(@"%d", self.selectItem); 
    [self.scrollView setContentOffset:CGPointMake(0, (self.scrollView.contentSize.height - self.scrollView.frame.size.height) - (itemScrollViewHeight * self.selectItem)) animated:YES]; 
    //[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(stopDisplayLink) userInfo:nil repeats:NO]; 
    [self stopDisplayLink]; 
} 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if (!decelerate) 
    { 
     [self snapToItem]; 
    } 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    [self snapToItem]; 
} 

#pragma mark Display Link 

- (void)startDisplayLinkIfNeeded 
{ 
    if (!self.displayLink) 
    { 
     self.displayLink = [CADisplayLink displayLinkWithTarget:self.view selector:@selector(display)]; 
     [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:UITrackingRunLoopMode]; 
    } 
} 

- (void)stopDisplayLink 
{ 
    if (self.displayLink) 
    { 
     [self.displayLink invalidate]; 
     self.displayLink = nil; 
    } 
} 

ответ

0

Вы пытались добавить ссылку для отображения к NSRunLoopCommonModes?