在子视图周围的NSTextView中布置文本

时间:2013-04-28 17:26:11

标签: macos cocoa nstextview nslayoutmanager nstextcontainer

我要做的是拥有一个NSTextView并为其添加自定义NSView子视图,但是要有它,以便文本可以围绕子视图进行布局。

现在,我可以轻松地在textview中添加子视图,但当然,这会进入textview,而文本则不知道子视图,所以它只是在子视图上方/下方运行。当然不是我想要的。

所以我希望能够至少在“块”中添加我自己的视图(比如当一个HTML元素是一个块元素,所以它在它自己的行上),也可能是“内联”(那个)是一个与文本一致的子视图,就像HTML元素可以内联一样),虽然这不是绝对必需的。

我无法弄清楚如何使这项工作。我已经看到可以添加到textview的唯一方法是使用文本附件,但是那些似乎只降级为图像/文件,而且仅限于NSCell,它不包含(据我所知)任意NSView。

我觉得这应该是可能的,我从哪里开始?

1 个答案:

答案 0 :(得分:0)

我知道这个问题发布已经有一段时间了,但是我最近遇到了同样的问题,发现解决方案非常简单。

只需将排除路径附加到NSTextView的容器中即可,就像在Swift中一样:

// Where 'subview' is the view you would like to avoid drawing text over
let exclusionPath = NSBezierPath(rect: subview.frame)
self.textContainer?.exclusionPaths.append(exclusionPath)