2011-05-14 127 views
0

我为我的textview创建了自定义滚动条(在scrollview的awakeFromNib方法中启动它),现在我想让用户选择是否要显示滚动条在应用程序启动。问题在于,即使在创建滚动条后立即隐藏滚动条,滚动条也会始终显示,并将其设置为滚动条的滚动条。奇怪的是,在触发事件后尝试隐藏滚动条(例如,通过单击首选项中的复选框),滚动条会正确隐藏和显示。我做错了什么?任何帮助表示赞赏!可可:在应用程序启动时隐藏textview的自定义滚动条

回答

3

奇怪的是,添加自定义滚轮,滚动视图之前,我必须使用setHasVerticalScroller:YES,否则我不能滚动使用两个手指滚动手势。然后,如果用户不希望显示滚动条,我必须在文档的windowControllerDidLoadNib方法中使用setHasVerticalScroller:NO,在滚动视图的awakeFromNib方法中添加滚动条之后使用它将不起作用。那么,至少现在它似乎工作!

+0

唯一对我有用的东西。当不使用笔尖时,我已经在viewDidMoveToWindow方法中重置为NO。 – svoisen 2013-03-01 00:49:53

0

我一直使用IB设置滚动条,然后用以下行,如果我想压制他们中的一个:

[self.aScrollView setHasHorizontalScroller:NO]; // so only the vertical scrollbar is active 

尝试使用awakeFromNib那行,后来将其设置为YES,如果用户选择,而不是使用“隐藏”属性。

P.S.在IB中添加的NSTextView始终嵌入在NSScrollView中,它是滚动视图,用于控制滚动条。因此,如果上述不工作,尝试在你的TextView的上海华调用setHasWhateverScroller:

[[[aTextView superview] superview] setHasHorizontalScroller:NO]; 

如果你得到一个“无法识别的选择”的错误,然后尝试明确铸造上海华向NSScrollView(这将工作仅当在上海华真NSScrollView的一个实例):

[(NSScrollView *)[[aTextView superview] superview] setHasHorizontalScroller:NO]; 
+0

非常感谢您的回答,但这并不能解决我的问题。问题是,使用setHasVerticalScroller隐藏滚动条后(是的,我只使用垂直滚动条,我不需要水平滚动条),我甚至不能使用触控板滚动,所以滚动的唯一方法是移动键盘闪烁的光标,这不应该发生。我认为解决这个问题的唯一方法是隐藏滚动条,所以它仍然存在,但没有被看到。 – Nickkk 2011-05-15 10:47:13

+0

哦,所以你想通过触控板滚动工作,只是隐藏每个用户pref滚动条本身。你说这是一个自定义的滚动器,但是你在awakeFromNib中启动它,所以你必须在一个nib中使用滚动视图。您可以尝试使用滚动视图的IB设置进行播放,如“自动隐藏滚动条”。或者,如果你实际上不使用nib/xib,你应该使用viewDidLoad,而不是awakeFromNib - 可能是这个问题。 – Wienke 2011-05-16 00:16:41

+1

奇怪的是,在将自定义滚动条添加到滚动视图之前,我必须使用'setHasVerticalScroller:YES',否则我无法使用双指滚动手势进行滚动。然后,如果用户不希望显示滚动条,我必须在文档的windowControllerDidLoadNib方法中使用'setHasVerticalScroller:NO',在滚动视图的'awakeFromNib'方法中添加滚动条后使用它' 。那么,至少现在它似乎工作! – Nickkk 2011-06-25 10:41:45