解决使用自定义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。当然只是笔者的猜测哈,大神可轻喷