自动滚动问题

时间:2011-02-10 08:33:03

标签: cocoa autoscroll

1.创建一个cocoa应用程序(不是基于文档的)

2.创建一个新类“StretchView”(子类NSView)

3.打开“界面”构建器并将“滚动视图”拖动到主窗口

4.选择“滚动视图”并设置“StretchView”类(在类标识窗口中)

内容视图的大小为500 * 500,而strechview的大小也为500 * 500 (水平滚动已启用)。

然后我开始一个接一个地水平画出一些数字(1,2,3,4 ......)。 当数字超出游侠(x pos大于500)时,我增加宽度 StretchView。 (到目前为止,一切正常)

然后我尝试让水平滚动条自动滚动到最后 每当我增加StretchView的宽度时,最后一个数字就是coulde 可见

以下是代码:

//The timer is called every sec
-(void)myTimerAction:(NSTimer *) timer
{  
    NSLog(@"myTimerAction");

       //......
    int i = _myArray.count;
    NSRect rect = [self frame];
    int width = rect.size.width;

       //The width between two number is 10
       //When the x pos of current num is bigger then the scroll's width
    if((i * 10) > width) {

           //reset the width
        width = i * 10;
        [self setFrameSize:CGSizeMake(width, rect.size.height)];
           //How to make it autoscroll???
           //...............................
    }
    //......
    [self setNeedsDisplay:YES];
} 

1 个答案:

答案 0 :(得分:0)

试试这个:

NSView *contentView = [[self enclosingScrollView] contentView];
CGFloat newXPosition = width - NSWidth([contentView bounds]);
if (newXPosition > 0.0) [self scrollPoint:NSMakePoint(newXPosition, 0.0)];

contentView是封闭滚动视图中的剪切视图。您希望将当前视图滚动到视图中的x点,以使此x点+剪切视图宽度给出视图的最后剪切视图宽度点。