用NSScrollView替换NSTextField以获取滚动条

时间:2015-12-16 09:22:24

标签: objective-c cocoa nstextview nsscrollview

用Objective-C编写的我的OS X应用程序需要显示变化NSString*变量theString,这可能会变得非常大。

我使用Xcode IB构建一个nib文件,在AppDelegate.h中声明的theString对象NSTextField*中显示panel,如下所示:

@property (weak) IBOutlet NSTextField *panel;

现在我可以像这样在AppDelegate.m中设置panel的内容:

self.panel.stringValue = theString;

一切正常。但我现在想给我的文本字段一个滚动条。因此,取代"文本字段"我选择了一个"文本视图"从对象库中获取蓝线以生成panel的新声明,现在看起来像这样:

@property (weak) IBOutlet NSScrollView *panel;

现在不再有效了:

self.panel.stringValue = theString;

引发错误:(!) Property 'stringValue' not found on object of type 'NSScrollView*'

我如何修复此声明?

(可能我只是说我找到关于这个主题的广泛的Apple文档拜占庭和不透明。为什么我天真地期待这个简单问题的简单回答,因为它似乎暗示了什么?我必须遗漏一些明显的东西 - - 它是什么?)

1 个答案:

答案 0 :(得分:0)

你得到的是一个封装在NSScrollView中的NSTextView。 scrollView是制作所需滚动条的东西。它基本上在视口内部拥有一个可能更大的视图,并且只显示其中的一小部分,您可以使用滚动条移动它。您需要从代码中获取(另一个)引用到scrollView中的NSTextView。您可以在IB中的层次结构中找到NSTextView并附加到该层。

这是你想要的方向,但我认为不是你需要的。 textView是一个比简单的textField更高级的控件,可能比你需要的更多。您可以使用包含在内部的默认NSView附带的NSScrollView来使用自定义视图。然后,而不是NSTextView将您的NSTextField放在NSView上。这个问题是你需要添加一些代码来根据textField的内容自动调整NSTextField和NSView的大小。一旦你对它进行了排序,scrollView将自动安排你需要的滚动条。