解决使用自定义NSScroller后,滚动条的自动隐藏功能消失问题

解决使用自定义NSScroller后,滚动条的自动隐藏功能消失问题

背景:

项目中需要对NSScrollview进行自定义,所以使用了自定义的LYScroller。LYScroller里边暂时没有任何代码。在xib中选中NSScrollview的Scroller ,切换至Identity Inspector,将Scroller的Custom Class中的class换成自定义的LYScroller后,(设置系统滚动条效果:系统偏好->通用->显示滚动条-> 选择"根据鼠标或触控板自动显示")编译运行,发现系统默认的滚动条自动隐藏效果消失了(已经设置NSScrollview的Automatically Hide Scroller属性为true)。我们希望它能够在以下场景中自动隐藏:

比如

tableview中内容能全部显示得下时;

没有连接鼠标时;

触控板手指离开不再触摸时;

然而并没有。。。

环境:

OS X 10.11.5

XCode 7.1

解决方式:

改变设置滚动条的方式,不在xib中设置,而改为在代码中设置。我们可以在自定义的NSScrollview的.m 文件中的initWithFrame等初始化方法中手工设置Scrollview的滚动条如:

self.horizontalScroller = [[LYScroller alloc] initWithFrame: aFrame];

self.verticalScroller = [[LYScroller alloc] initWithFrame: aFrame];

run一哈,问题解决,滚动条的自动隐藏功能回来啦!

分析:

猜测可能是XCode 7.1的bug,在xib中修改了Scroller的类后导致ScrollView没法管理Scroller。当然只是笔者的猜测哈,大神可轻喷

你可能感兴趣的:(解决使用自定义NSScroller后,滚动条的自动隐藏功能消失问题)