以编程方式滚动uitextview

时间:2011-09-01 06:30:19

标签: iphone ios4 scroll uitextview

我想让我的uitextview在应用程序启动时自动滚动。任何人都可以帮我详细的代码吗?我是iPhone SDK的新手。

2 个答案:

答案 0 :(得分:11)

.h文件

@interface Credits : UIViewController 
{
    NSTimer *scrollingTimer;

    IBOutlet UITextView *textView;


}
@property (nonatomic , retain) IBOutlet UITextView *textView;

- (IBAction) buttonClicked ;

- (void) autoscrollTimerFired;

@end

.m文件

- (void) viewDidLoad
{       
    // it prints the initial position of text view 
    NSLog(@"%f %f",textView.contentSize.width , textView.contentSize.height);

    if (scrollingTimer == nil)
    {
        // A timer that updates the content off set after some time so it can scroll 
        // you can change time interval according to your need (0.06)
        // autoscrollTimerFired is the method that will be called after specified time interval. This method will change the content off set of text view
        scrollingTimer = [NSTimer scheduledTimerWithTimeInterval:(0.06)
                         target:self selector:@selector(autoscrollTimerFired) userInfo:nil repeats:YES];        
    }
}

- (void) autoscrollTimerFired
{
    CGPoint scrollPoint = self.textView.contentOffset; // initial and after update
    NSLog(@"%.2f %.2f",scrollPoint.x,scrollPoint.y);
    if (scrollPoint.y == 583) // to stop at specific position 
    {
        [scrollingTimer invalidate];
        scrollingTimer = nil;
    }
    scrollPoint = CGPointMake(scrollPoint.x, scrollPoint.y + 1); // makes scroll
    [self.textView setContentOffset:scrollPoint animated:NO];
    NSLog(@"%f %f",textView.contentSize.width , textView.contentSize.height);

}

希望它可以帮助你......

答案 1 :(得分:1)

UITextView派生自UIScrollview,因此您可以使用-setContentOffset设置滚动位置:animated:。

假设你想以每秒10点的速度平滑滚动,你会做类似的事情。

- (void) scrollStepAnimated:(NSTimer *)timer {
    CGFloat scrollingSpeed = 10.0; // 10 points per second
    NSTimeInterval repeatInterval = [timer timeInterval]; // ideally, something like 1/30 or 1/10 for a smooth animation

    CGPoint newContentOffset = CGPointMake(self.textView.contentOffset.x, self.textView.contentOffset.y + scrollingSpeed * repeatInterval);
    [self.textView setContentOffset:newContentOffset animated:YES];
}

当然你必须设置计时器,并确保在视图消失时取消滚动等等。