2

我现在正在尝试 2 小时让我的滚动视图滚动特定点。它令人沮丧,我不能告诉你为什么它不起作用。

我有一个滚动视图,其中有一个 NSClipView。它们是在我的滚动点之前在我的 AppDelegate 中创建的。

但要么

[myclipview scrollPoint:NSMakePoint(1000.0, 0.0)];

工作,也没有

[[self.scrollView documentView] scrollPoint:NSMakePoint(1000.0, 0.0)];

(我希望它一直向右滚动,但不能使用任何翻转方法或某事。)

发现这个问题 Why is [[NSScrollView documentView] scrollPoint:] not working in loadView 方法?

并没有帮助我,我也没有在 loadView 方法中尝试过。scrollView 和 myclipview 也不是零。对我有什么建议吗?滚动视图工作正常,但它不会滚动到我的位置。

编辑

只是为了舒尔,我做了这个小测试项目:

NSScrollView* myscrollview = [[NSScrollView alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)];
NSClipView* myclipview = [[NSClipView alloc] initWithFrame:NSMakeRect(0, 0, 500, 400)];
[myscrollview setHasVerticalScroller:YES];
[myscrollview setHasHorizontalScroller:YES];
[myscrollview setDocumentView:myclipview];

[[myscrollview documentView] scrollPoint:NSMakePoint(400, 300)];

[self.window.contentView addSubview:myscrollview];

它不会在任何地方滚动,我想我在这里遗漏了一些东西......?

4

1 回答 1

1

小型测试项目您需要通过以下方式进行更改。我已经尝试过了,似乎正在工作。如果您还有其他问题,请告诉我。

希望这能解决问题:)

   NSScrollView* myscrollview = [[NSScrollView alloc] initWithFrame:NSMakeRect(10.0f, 100.0f, 200, 200)];
    NSClipView* myclipview = [[NSClipView alloc] initWithFrame:NSMakeRect(10.0f, 100.0f, 500, 400)];
    [myscrollview setHasVerticalScroller:YES];
    [myscrollview setHasHorizontalScroller:YES];
    [myscrollview setDocumentView:myclipview];

    [self.window.contentView addSubview:myscrollview];


    //******** Code Changes from here**********
    //This Calculation needs to be done 
    CGPoint newScrollOrigin=NSMakePoint(0.0,NSMaxY([[myscrollview documentView] frame])
                                -NSHeight([[myscrollview contentView] bounds]));

    //Increment/Decrement in x of newScrollOrigin will move the scroll position horizontally
    //Increment/Decrement in y of newScrollOrigin will move the scroll position vertically.

    //Incrementation of Values depends on your requirement.
    CGPoint setOrigin = CGPointMake(newScrollOrigin.x , newScrollOrigin.y - 120.0f);

    //Set the Scroll Point
    [[myscrollview contentView] scrollToPoint:setOrigin];
于 2013-06-14T07:20:13.187 回答