我正在尝试2小时让我的滚动视图滚动特定点。它令人沮丧,我无法告诉你为什么它不会工作。
我有一个scrollview,它是一个NSClipView。 它们是在我的scrollPoint之前的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 method?
并没有帮助我,我也没有在loadView方法中尝试它。 scrollView和myclipview也不是。有什么提示吗? scrollview工作正常,但它不会滚动到我的位置。
修改
为了保持谨慎,我做了一个小测试项目:
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];
并且它不会在任何地方滚动,我想我在这里错过了一些东西......?
答案 0 :(得分: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];