【问题标题】:NSScrollview scrollPoint doesnt scroll to pointNSScrollview scrollPoint 不滚动到点
【发布时间】:2013-06-13 21:51:39
【问题描述】:

我现在正在尝试 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 method?

并没有帮助我,我也没有在 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];

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

【问题讨论】:

  • 只是为了保证我做了这个小测试项目:
  • 我认为您需要为 NSScrollView 实例的 documentView 设置框架,尤其是高度。
  • @PatrickTescher iOS 之外没有“setContentOffset”。问题是关于“NSScrollView”而不是“UIScrollView”

标签: cocoa scroll nsscrollview


【解决方案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];

【讨论】:

  • 嘿,谢谢!但我已经尝试过scrollToPoint,它做了不同的事情。它在该位置启动滚动视图。但我无法滚动到该点“左侧”的区域。我想“把滚动条”放到另一个点,而不是滚动视图的边界。我需要的函数应该是scrollPoint,但我不知道为什么它不做任何事情。
  • //值的增量取决于您的要求。x 的增量将使滚动条向右移动,x 的减量将使滚动条向左移动。 CGPoint setOrigin = CGPointMake(newScrollOrigin.x + 400.0f , newScrollOrigin.y - 120.0f); //设置滚动点 [[myscrollview contentView] scrollPoint:setOrigin];
猜你喜欢
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多