NSScrollView在滚动时跳到底部

Nic*_*ing 10 cocoa objective-c nsscrollview

我有一个NSScrollView包含一个NSImageView,它根据各种因素调整大小.调整大小时我通常会更改图像,因此我将NSScrollView滚动到顶部.这很好用.但是,当我再次开始滚动NSScrollView时,它会移动几个像素然后(大部分时间)跳转到滚动的底部.跳转一次后,它会正常工作,直到我再次将滚动条移到顶部.这让我疯了.我真正做的就是:

[_imageView setImage: anNSImage];

NSRect frame;

NSSize imageSize = [anNSImage] size];
frame.size = imageSize;
frame.origin = NSZeroPoint;

[_imageView setFrame: frame];
[[_mainScrollview contentView] scrollToPoint: NSMakePoint(0, [_imageView frame].size.height - [_mainScrollview frame].size.height)];
Run Code Online (Sandbox Code Playgroud)

Vin*_*uan 8

尼克,谢谢你的代码.我修改了你的代码,现在效果很好.首先,您需要将垂直卷轴滚动到顶部.其次,滚动内容视图.

    // Scroll the vertical scroller to top
    if ([_scrollView hasVerticalScroller]) {
        _scrollView.verticalScroller.floatValue = 0;
    }

    // Scroll the contentView to top
    [_scrollView.contentView scrollToPoint:NSMakePoint(0, ((NSView*)_scrollView.documentView).frame.size.height - _scrollView.contentSize.height)];
Run Code Online (Sandbox Code Playgroud)


小智 -4

您设置scrollView.contentOffset = CGPointMake(0,0)。或者根据您的要求。更改图像后设置 contectoffset。

  • 只有 UIScrollView 有 contentOffset 属性。NSScrollView 没有。 (2认同)