Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 创建具有可拖动文本元素的视图_Cocoa_Draggable_Subview_Nstextview - Fatal编程技术网

Cocoa 创建具有可拖动文本元素的视图

Cocoa 创建具有可拖动文本元素的视图,cocoa,draggable,subview,nstextview,Cocoa,Draggable,Subview,Nstextview,我正在尝试为一种头脑风暴应用程序(例如OmniGraffle)创建一个视图,其中的元素包含TextView,可以四处拖动。(另外,应该可以用箭头连接,但这不是问题所在) 我做了家庭作业,通过谷歌搜索,阅读了有关可可的书籍,但似乎没有类似的例子。 因为我也是可可新手,所以我在这里有点无助 我确信的是,我需要一个自定义视图,在该视图中我可以创建我的元素-到目前为止,我一直尝试这样做: 首先,我搜索了将子窗口添加到窗口以创建元素的语法。我想象中,子窗口会自动移动到前面等等。 问题:正如你们这些经验丰

我正在尝试为一种头脑风暴应用程序(例如OmniGraffle)创建一个视图,其中的元素包含TextView,可以四处拖动。(另外,应该可以用箭头连接,但这不是问题所在)

我做了家庭作业,通过谷歌搜索,阅读了有关可可的书籍,但似乎没有类似的例子。 因为我也是可可新手,所以我在这里有点无助

我确信的是,我需要一个自定义视图,在该视图中我可以创建我的元素-到目前为止,我一直尝试这样做:

  • 首先,我搜索了将子窗口添加到窗口以创建元素的语法。我想象中,子窗口会自动移动到前面等等。
    问题:正如你们这些经验丰富的Cocoa程序员可能并不感到惊讶,我惊讶地发现类似的东西什么都没有——这似乎是某种东西,只是Cocoa中没有打算这样做

  • 然后我考虑创建子视图,其中包含标题栏图形的自定义视图(用户可以在其中单击以拖动元素)和
    NSTextView

    问题:

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

  • 正因为如此,我现在想在周围的自定义视图中绘制标题栏,并以编程方式创建textview(据我所知,文本“视图”实际上不是一个视图,并从NSCell获取其功能,以减少视图的所有工作。)
    问题:

    • 即使这样也失败了,因为我无法创建一个不能填充整个窗口的文本视图(
      [[NSScrollView alloc]initWithFrame:aRect]
      initWithFrame:
      似乎被忽略了,或者我弄错了吗?)
    • 另外,在最终的应用程序中,每个元素上都应该有一些按钮。我想对于每个元素,使用nib文件中的子视图会更容易实现吗
好吧,现在什么都不管用,我读得越多,问题似乎就越多,我感到非常困惑和沮丧。

我如何实现这样一个程序?有人能把我推到正确的方向吗?

我为可拖动元素创建了一个类,在其中我将位置、大小和文本保存在实例变量中。在我看来,每个新元素实例都被添加到一个数组中(现在,它在没有控制器的情况下工作)。该数组用于在
drawRect:
中绘制循环中的所有元素。对于元素的文本,我只使用一个NSTextFieldCell,它设置为同一循环中每个元素的保存文本

这样也可以重叠元素