7

是否可以“隐藏” NSScrollView 的滚动条并仍然获得手势滚动行为?

4

5 回答 5

4

创建一个 NSScroller 子类并将其设置为 NSScrollView 实例的垂直/水平滚动条。

NSScroller 子类应覆盖此(10.7 及更高版本):

+ (CGFloat)scrollerWidthForControlSize:(NSControlSize)controlSize scrollerStyle:(NSScrollerStyle)scrollerStyle {
return 0;
}
于 2012-10-03T21:53:54.210 回答
3

这绝对是 AppKit 中的一个错误。我能够使用以下任一解决方案在 10.8.5 上运行:

1)子类NSScroller(首选方法)

+ (BOOL)isCompatibleWithOverlayScrollers
{
    // Let this scroller sit on top of the content view, rather than next to it.
    return YES;
}

- (void)setHidden:(BOOL)flag
{
    // Ugly hack: make sure we are always hidden.
    [super setHidden:YES];
}

来源https ://stackoverflow.com/a/12960795/836263中的jmk

2)使用传统风格时,反弹和动力似乎被打破了。它还部分破坏了 Apple 的滚动同步代码。NSScrollerStyleOverlay如果一个是另一个是 ,它会导致滚动视图重置滚动位置NSScrollerStyleLegacy。如果滚动覆盖样式滚动视图,则滚动旧样式,它将两个滚动视图重置为顶部 y=0 滚动偏移量。

[self.scrollView setHasVerticalScroller:YES];
[self.scrollView setScrollerStyle:NSScrollerStyleLegacy];
[self.scrollView setHasVerticalScroller:NO];
于 2013-09-28T00:20:30.257 回答
1

导致滚动视图不显示滚动条并且不响应手势滚动:

-setHasHorizontalScroller:NO

导致显示禁用的滚动条,但它响应手势滚动:

-setHasHorizontalScroller:YES
-setHidden:YES
于 2011-07-22T23:18:00.050 回答
1

对的,这是可能的。在初始化滚动视图后尽快尝试。

    self.scrollView.wantsLayer = YES;

我已经在不隐藏NSScroller子类和不接触的情况下完成了这项工作setHasVerticalScroller:。此外,如果self.scrollView是一个覆盖的子类drawRect:,请尝试将其关闭以确保您在那里所做的事情不会导致问题。

于 2014-07-08T03:38:20.713 回答
0

你为什么不试试呢?

回答这个问题:是的,如果用户有带滚轮的鼠标或具有滚动功能的触摸板,尽管滚动条不可见,但仍然可以滚动视图。

于 2011-05-17T14:04:18.810 回答