Cocoa 创建具有可拖动文本元素的视图
我正在尝试为一种头脑风暴应用程序(例如OmniGraffle)创建一个视图,其中的元素包含TextView,可以四处拖动。(另外,应该可以用箭头连接,但这不是问题所在) 我做了家庭作业,通过谷歌搜索,阅读了有关可可的书籍,但似乎没有类似的例子。 因为我也是可可新手,所以我在这里有点无助 我确信的是,我需要一个自定义视图,在该视图中我可以创建我的元素-到目前为止,我一直尝试这样做:Cocoa 创建具有可拖动文本元素的视图,cocoa,draggable,subview,nstextview,Cocoa,Draggable,Subview,Nstextview,我正在尝试为一种头脑风暴应用程序(例如OmniGraffle)创建一个视图,其中的元素包含TextView,可以四处拖动。(另外,应该可以用箭头连接,但这不是问题所在) 我做了家庭作业,通过谷歌搜索,阅读了有关可可的书籍,但似乎没有类似的例子。 因为我也是可可新手,所以我在这里有点无助 我确信的是,我需要一个自定义视图,在该视图中我可以创建我的元素-到目前为止,我一直尝试这样做: 首先,我搜索了将子窗口添加到窗口以创建元素的语法。我想象中,子窗口会自动移动到前面等等。 问题:正如你们这些经验丰
- 首先,我搜索了将子窗口添加到窗口以创建元素的语法。我想象中,子窗口会自动移动到前面等等。
问题:正如你们这些经验丰富的Cocoa程序员可能并不感到惊讶,我惊讶地发现类似的东西什么都没有——这似乎是某种东西,只是Cocoa中没有打算这样做 - 然后我考虑创建子视图,其中包含标题栏图形的自定义视图(用户可以在其中单击以拖动元素)和
NSTextView
问题:- 我读到,在一个窗口中创建几十个子视图并不是那么聪明,因为这样做会非常慢(或者在这种情况下这不是很糟糕,因为所有子视图都是同一类的实例?)李>
- 我也不知道如何从nib或xib文件加载子视图。我需要一个视图控制器吗?或者这会让几十个例子的问题变得更糟吗李>
- 苹果告诉你不要重叠子视图(好吧,这没那么重要,但我真的想知道OmniGroup的人是如何制作OmniGraffle的…)
- 正因为如此,我现在想在周围的自定义视图中绘制标题栏,并以编程方式创建textview(据我所知,文本“视图”实际上不是一个视图,并从NSCell获取其功能,以减少视图的所有工作。)
问题:- 即使这样也失败了,因为我无法创建一个不能填充整个窗口的文本视图(
的[[NSScrollView alloc]initWithFrame:aRect]
似乎被忽略了,或者我弄错了吗?)initWithFrame:
- 另外,在最终的应用程序中,每个元素上都应该有一些按钮。我想对于每个元素,使用nib文件中的子视图会更容易实现吗
- 即使这样也失败了,因为我无法创建一个不能填充整个窗口的文本视图(
我如何实现这样一个程序?有人能把我推到正确的方向吗?我为可拖动元素创建了一个类,在其中我将位置、大小和文本保存在实例变量中。在我看来,每个新元素实例都被添加到一个数组中(现在,它在没有控制器的情况下工作)。该数组用于在
drawRect:
中绘制循环中的所有元素。对于元素的文本,我只使用一个NSTextFieldCell,它设置为同一循环中每个元素的保存文本
这样也可以重叠元素