Как включить плавную прокрутку в UITextView? - PullRequest
2 голосов
/ 08 сентября 2011
I've got my UITextView set up for scrolling like this,

-(void)startAutoScroll
{
    NSLog(@"AutoScroll Started");
    if (scrollingTimer == nil) {
        scrollingTimer = [NSTimer scheduledTimerWithTimeInterval:(60.0/1000.0)
                                                          target:self
                                                        selector:@selector(autoscrollTimerFired:) 
                                                        userInfo:nil 
                                                         repeats:YES];
    }

}

- (void) autoscrollTimerFired:(NSTimer *)timer
{
    scrollPoint = self.completeText.contentOffset;
    scrollPoint = CGPointMake(scrollPoint.x, scrollPoint.y + velocityFactor);
    [self.completeText setContentOffset:scrollPoint animated:NO];
}

Как включить плавную прокрутку? спасибо

1 Ответ

1 голос
/ 08 сентября 2011

Вы можете сделать трюк прокруткой пиксель за пикселем с анимированным NO, так как он не останавливается как свойство анимированного YES после завершения прокрутки. Единственное, что вам нужно установить - это speedFactor как время вызова вашего NSTimer, а не прокрутки. И после того, как прокрутка сделана с contentSize, аннулируйте таймер, и прокрутка должна остановиться.

- (void) autoscrollTimerFired:(NSTimer *)timer {
    [self.completeText setContentOffset:CGPointMake(0, self.completeText.contentOffset.y + 1.0) animated:NO];
    if (self.completeText.contentOffset.y != self.completeText.contentSize.height - self.completeText.frame.size.height) {
        scrollingTimer = [NSTimer scheduledTimerWithTimeInterval:velocityFactor target:self selector:@selector(autoscrollTimerFired:) userInfo:nil repeats:NO];
    } else {
        [scrollingTimer invalidate];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...