Handwired NSTextView剪辑bug

时间:2009-12-11 14:36:16

标签: objective-c cocoa macos

我正在尝试手动组装NSTextView,就像Apple的TextSizingExample一样,发现了一个无聊的bug。如果您运行TextSizingExample并选择“Wrapping Scrolling Text”模式,那么您将看到文本被垂直滚动条部分隐藏。试图使用文本容器和文本视图的大小和自动调整掩码,但它没有帮助。

2 个答案:

答案 0 :(得分:1)

问题在于VerticalScrollAspect类创建滚动视图的天真方法。在-containerView方法中,有以下行:

scrollView = [[NSScrollView alloc] initWithFrame:[documentView frame]];

不幸的是,这并不考虑垂直滚动条的宽度或滚动视图的边框样式,这两者都很重要。

答案 1 :(得分:0)

您正在处理三个组件:包含窗口或视图,scrollview和scrollview中的textview。应该初始化scrollview以适合将在其中显示的视图或窗口的框架或边界,textview只需要知道scrollview的内容区域所在的位置。因此:

NSScrollView *scrollView = [[[NSScrollView alloc] initWithFrame:[containingView bounds]] autorelease];

NSSize contentSize = [scrollView contentSize];
NSTextView *textView = [[[NSTextView alloc] initWithFrame:NSMakeRect(0, 
                                 0,
                                 contentSize.width, 
                                 contentSize.height)
            ] autorelease];