NSScrollViewを一番上にスクロールする正しい方法を知っている人はいますか?UIViewのscrollToTopメソッドに相当するものを探していました。
これは私がこれまでに持っているものですが、すべての状況で完全に正しいわけではありません
[self.contentView scrollToPoint:NSMakePoint(0, MAX(contentView.frameHeight, ((NSView*)self.documentView).frameHeight))];
NSScrollViewを一番上にスクロールする正しい方法を知っている人はいますか?UIViewのscrollToTopメソッドに相当するものを探していました。
これは私がこれまでに持っているものですが、すべての状況で完全に正しいわけではありません
[self.contentView scrollToPoint:NSMakePoint(0, MAX(contentView.frameHeight, ((NSView*)self.documentView).frameHeight))];
Swift 5用に更新:
ドキュメントビューが反転している場合:
scrollView.documentView?.scroll(.zero)
そうでなければ:
if let documentView = scrollView.documentView {
documentView.scroll(NSPoint(x: 0, y: documentView.bounds.size.height))
}
ついにそれを理解した。チャームのように機能します!
if ([self hasVerticalScroller]) {
self.verticalScroller.floatValue = 0;
}
NSPoint newOrigin = NSMakePoint(0, NSMaxY(((NSView*)self.documentView).frame) - self.boundsHeight);
[self.contentView scrollToPoint:newOrigin];
これも問題なく動作します。NSScrollViewのdocumentViewのスクロールポイントを設定します
NSPoint pt = NSMakePoint(0.0, [[self.scrollView documentView]
bounds].size.height);
[self.scrollView.documentView scrollPoint:pt];
Swift for Mac OSに変換する場合、以前のソリューションは一番下までスクロールします。Mac OSとiOSでは、y座標の方向が反転しています。
MacOS用のSwift3ソリューション:
scrollView.documentView?.scroll(NSPoint.zero)