Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如果setHasHorizontalScroller:否,NSScrollView能否滚动?_Cocoa_Nsscrollview_Nsscroller - Fatal编程技术网

Cocoa 如果setHasHorizontalScroller:否,NSScrollView能否滚动?

Cocoa 如果setHasHorizontalScroller:否,NSScrollView能否滚动?,cocoa,nsscrollview,nsscroller,Cocoa,Nsscrollview,Nsscroller,是否可以“隐藏”NSScrollView的滚动条,但仍然可以获得手势滚动行为?为什么不试试呢 回答问题:是的,如果用户有带滚轮的鼠标或具有滚动功能的触摸板,尽管滚动条不可见,仍然可以滚动视图。导致滚动视图不显示滚动条,也不响应手势滚动: -setHasHorizontalScroller:NO -setHasHorizontalScroller:YES -setHidden:YES 导致显示禁用的滚动条,但它会响应手势滚动: -setHasHorizontalScroller:NO -se

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

为什么不试试呢


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

导致滚动视图不显示滚动条,也不响应手势滚动:

-setHasHorizontalScroller:NO
-setHasHorizontalScroller:YES
-setHidden:YES
导致显示禁用的滚动条,但它会响应手势滚动:

-setHasHorizontalScroller:NO
-setHasHorizontalScroller:YES
-setHidden:YES

创建NSScroller子类,并将其设置为NSScrollView实例的垂直/水平滚动器

NSScroller子类应覆盖此(10.7及以上版本):


这绝对是AppKit中的一个bug。我能够使用以下任一解决方案在10.8.5中实现此功能:

1)子类NSScroller(首选方法)

来源:在

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

[self.scrollView setHasVerticalScroller:YES];
[self.scrollView setScrollerStyle:NSScrollerStyleLegacy];
[self.scrollView setHasVerticalScroller:NO];

是的,这是可能的。请在初始化scrollView后立即尝试此操作

    self.scrollView.wantsLayer = YES;

我在不隐藏
NSScroller
子类和不触摸
sethasverticalcoller:
的情况下实现了这一点。另外,如果
self.scrollView
是重写
drawRect:
的子类,请尝试将其关闭,以确保您在那里执行的操作不会导致问题。

不确定我做错了什么。当setHasHorizontalScroller:是时,我可以用我的触控板滚动,但如果setHasHorizontalScroller:否,则不能。我想你的意思可能是“是会导致禁用的滚动条不显示,但它会响应手势滚动”,否?