如果NSTextView为空,则没有光标

时间:2014-06-28 10:42:25

标签: objective-c cocoa swift nstextview

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

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

我尝试过更新游标,但没有任何反应。如果文本视图为空并且最后一个是串联的,则会发生此问题。我应该在哪里找到答案?搜索了这个论坛,Apple docs,用Google搜索 - 没有。

创建第一个文本视图

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键。现在,如果您向上移动光标然后向下移动光标,它将不会显示。您必须再次按下键,然后光标将显示。与鼠标相同:您必须左键单击两次,之后光标将显示在第二个文本视图中。

以下是示例:https://www.dropbox.com/s/47domcy0nuisncc/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202014-06-28%2013.37.58.png

以下是一个示例项目:https://www.dropbox.com/s/aw01oo0faajr4rn/Test.zip。我是从头开始的,当你点击Enter键时,它会放置第二个文本视图,你可以看到,即使在一个新的干净项目中也会出现这个问题。

1 个答案:

答案 0 :(得分:1)

这看起来像苹果工程师的错误。在其他应用中发现了相同的行为。