gpt4 book ai didi

cocoa - 创建具有可拖动文本元素的 View

转载 作者:行者123 更新时间:2023-12-03 16:44:48 25 4
gpt4 key购买 nike

我正在尝试为一种头脑 Storm 应用程序创建一个 View ,例如 OmniGraffle,其元素包含 TextView 并且可以拖动。 (此外,应该可以用箭头连接,但这还不是问题)

我做了功课,通过谷歌搜索并阅读了有关 cocoa 的书籍,但周围似乎没有类似的例子。由于我也是 cocoa 新手,所以这里有点无奈。

我确信的是,我需要一个自定义 View 来创建我的元素 - 到目前为止我尝试这样做的是:

  • 首先,我搜索了将子窗口添加到窗口以创建元素的语法。我想,子窗口会自动移动并出现在前面,等等。
    问题:你们这些经验丰富的 Cocoa 程序员可能并不感到惊讶,我很惊讶地发现没有任何类似的东西 - 这似乎是 Cocoa 中没有的东西?!

  • 然后我考虑创建 subview ,其中包含标题栏绘图的自定义 View (用户可以单击以拖动元素)和 NSTextView .
    问题:

    • 我读到,在一个窗口中创建数十个 subview 并不是那么聪明,因为这会非常慢(或者在这种情况下这不会那么糟糕,因为所有 subview 都是同一类的实例? )。
    • 此外,我不知道如何从 nib 或 xib 文件加载 subview 。我需要一个viewController吗?或者这会让数十个实例的问题变得更糟吗?
    • Apple 告诉你不要重叠 subview (好吧,这不是那么重要,但我真的很想知道 OmniGroup 的人是如何制作 OmniGraffle...)

  • 因此,我现在想在周围的自定义 View 中绘制标题栏,并以编程方式创建 TextView (据我所知,文本“ View ”并不是真正的 View ,而是采用其NSCell 的功能可以减少 View 方面的所有工作?)。
    问题:

    • 即使这样也失败了,因为我无法创建一个不填充整个窗口的 TextView (initWithFrame:[[NSScrollView alloc] initWithFrame: aRect] 似乎被忽略了,还是我弄错了?)。
    • 此外,最终应用程序中的每个元素上都应该有一些按钮。我想通过每个元素的 nib 文件中的 subview 会更容易完成吗?

好吧,现在没有任何效果,我读得越多,似乎出现的问题就越多,我感到非常困惑和沮丧。
我怎样才能实现这样一个程序呢?有人可以把我推向正确的方向吗?

最佳答案

我为可拖动元素创建了一个类,在实例变量中保存位置、大小和文本。在我看来,每个新元素实例都会添加到一个数组中(目前,这无需 Controller 即可工作)。该数组用于在drawRect:中循环绘制所有元素。对于元素的文本,我只使用 NSTextFieldCell,它设置为同一循环中每个元素保存的文本。

这样也可以重叠元素。

关于cocoa - 创建具有可拖动文本元素的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3216170/

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