Objective c NSTextView如果为';它是空的

Objective c NSTextView如果为';它是空的,objective-c,cocoa,swift,nstextview,Objective C,Cocoa,Swift,Nstextview,使用与单个NSLayoutManager连接的一系列NSTextView。非常常见的配置。每次用户点击Enter键时,都会创建新的NSTextView。换句话说,每个段落都在其自己的NSTextView实例中 但我一直在努力解决这个问题:如果链中的最后一个NSTextView是空的(比如,用户只需按Enter键并将光标移回前一个文本视图中的某个位置),那么当返回到这个空的NSTextView时,光标就会消失。如果我用鼠标单击,我必须在空文本视图中单击两次,这样光标就会出现。如果我用箭头键移动光标

使用与单个NSLayoutManager连接的一系列NSTextView。非常常见的配置。每次用户点击Enter键时,都会创建新的NSTextView。换句话说,每个段落都在其自己的NSTextView实例中

但我一直在努力解决这个问题:如果链中的最后一个NSTextView是空的(比如,用户只需按Enter键并将光标移回前一个文本视图中的某个位置),那么当返回到这个空的NSTextView时,光标就会消失。如果我用鼠标单击,我必须在空文本视图中单击两次,这样光标就会出现。如果我用箭头键移动光标,那么我必须再次按下箭头键两次

我尝试过更新游标,但什么也没发生。如果文本视图为空且是系列中的最后一个,则会发生此问题。我应该在哪里找到答案?搜索这个论坛,苹果文档,谷歌搜索-什么都没有

创建第一个文本视图

let textContainer = NSTextContainer(containerSize: containerSize)
layoutManager.addTextContainer(textContainer)
let textView = NSTextView(frame: frame, textContainer: textContainer)       
someView.addSubview(textView)
let anotherTextContainer = NSTextContainer(containerSize: containerSize)
layoutManager.addTextContainer(anotherTextContainer)
let anotherTextView = NSTextView(frame: anotherFrame, textContainer: anotherTextContainer)
someView.addSubview(anotherTextView)
创建第二个文本视图

let textContainer = NSTextContainer(containerSize: containerSize)
layoutManager.addTextContainer(textContainer)
let textView = NSTextView(frame: frame, textContainer: textContainer)       
someView.addSubview(textView)
let anotherTextContainer = NSTextContainer(containerSize: containerSize)
layoutManager.addTextContainer(anotherTextContainer)
let anotherTextView = NSTextView(frame: anotherFrame, textContainer: anotherTextContainer)
someView.addSubview(anotherTextView)
现在运行,键入内容并按Enter键。现在,如果将光标上下移动,它将不会显示。您必须再次按下向下键,然后光标将显示出来。鼠标也一样:您必须左键单击两次,然后光标才会显示在第二个文本视图中

下面是一个例子:


下面是一个示例项目:。我从头开始做的,当你按Enter键时,它会出现第二个文本视图,你可以看到,即使在一个新的干净的项目中,这个问题也会发生。

这看起来像是苹果工程师的一个bug。在其他应用程序中发现了相同的行为。

请将问题缩小到一个更简单的示例,再现您面临的问题。