gpt4 book ai didi

objective-c - 用 NSScrollView 替换 NSTextField 以获得滚动条

转载 作者:行者123 更新时间:2023-12-03 17:19:53 25 4
gpt4 key购买 nike

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

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

@property (weak) IBOutlet NSTextField *panel;

现在我可以在 AppDelegate.m 中设置 panel 的内容,如下所示:

self.panel.stringValue = theString;

这一切都运行良好。但我现在想给我的文本字段一个滚动条。因此,我从对象库中选择“ TextView ”来代替“文本字段”,并获取其蓝线来生成一个新的 panel 声明,现在如下所示:

@property (weak) IBOutlet NSScrollView *panel;

现在这不再有效:

self.panel.stringValue = theString;

引发错误:(!) 在“NSScrollView*”类型的对象上找不到属性“stringValue”

我需要如何修正这个语句?

(我可以说我找到了关于拜占庭和不透明主题的大量苹果文档。为什么我天真地期待这个简单问题的简单答案,正如这一切似乎暗示的那样?我一定错过了一些明显的东西 - - 这是什么?)

最佳答案

你得到的是一个包裹在 NSScrollView 中的 NSTextView。 ScrollView 是用来制作你想要的滚动条的东西。它基本上在其视口(viewport)内保留了一个可能更大的 View ,并且仅显示其中的一小部分,您可以使用滚动条进行移动。您需要从代码中获取对 ScrollView 内的 NSTextView 的(另一个)引用。您可以在 IB 的层次结构中找到 NSTextView 并将其附加到它。

这符合您想要的方向,但我认为不完全符合您的需要。 textView 是一个比简单的 textField 高级得多的控件,并且可能超出您的需要。您可以通过采用内含默认 NSView 的 NSScrollView 来使用自定义 View 。然后将 NSTextField 放在 NSView 上,而不是 NSTextView 上。问题在于,您需要添加一些代码来根据 textField 的内容自动调整 NSTextField 和 NSView 的大小。排序后,scrollView 将自动排列您需要的滚动条。

关于objective-c - 用 NSScrollView 替换 NSTextField 以获得滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34308126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com