我为我的文本视图创建了一个自定义滚动条(在滚动视图的 awakeFromNib 方法中启动它),现在我想让用户选择是否要在应用程序启动时显示滚动条。问题是滚动条总是出现,即使我在创建它后立即隐藏它并将它设置为滚动视图的滚动条。奇怪的是,在触发事件后尝试隐藏滚动条(例如通过单击首选项中的复选框)滚动条会正确隐藏和显示。我做错了什么?任何帮助表示赞赏!
问问题
1031 次
2 回答
3
奇怪的是,在将自定义滚动条添加到滚动视图之前,我必须使用setHasVerticalScroller:YES
,否则我无法使用两指滚动手势滚动。然后,如果用户不希望显示滚动条,我必须setHasVerticalScroller:NO
在文档的 windowControllerDidLoadNib 方法中使用,在滚动视图的方法中添加滚动条后使用它是行不通的awakeFromNib
。好吧,至少现在它似乎起作用了!
于 2011-06-27T09:43:40.323 回答
0
我一直使用 IB 来设置滚动条,如果我想抑制其中之一,则使用以下行:
[self.aScrollView setHasHorizontalScroller:NO]; // so only the vertical scrollbar is active
尝试在 awakeFromNib 中使用该行,如果用户选择,稍后将其设置为 YES,而不是使用“隐藏”属性。
PS 在 IB 中添加的 NSTextView 总是嵌入在 NSScrollView 中,它是控制滚动条的滚动视图。因此,如果上述方法不起作用,请尝试在 textview 的超级视图上调用 setHasWhateverScroller:
[[[aTextView superview] superview] setHasHorizontalScroller:NO];
如果您收到“无法识别的选择器”错误,请尝试将超级视图显式转换为 NSScrollView(仅当超级视图确实是 NSScrollView 的实例时才有效):
[(NSScrollView *)[[aTextView superview] superview] setHasHorizontalScroller:NO];
于 2011-05-14T19:43:26.720 回答