2014-06-28 3 views
2

Работа с серией NSTextView, связанная с одним NSLayoutManager. Очень распространенная конфигурация. Каждый раз, когда пользователь нажимает Enter, создается новый NSTextView. Другими словами, каждый абзац находится в собственном экземпляре NSTextView.NSTextView нет курсора, если он пуст

Но это были дни, когда я борюсь с этой проблемой: если последний NSTextView в цепочке пуст (скажем, пользователь просто нажимает Enter и перемещает курсор где-то в предыдущем текстовом представлении), тогда курсор исчезает, когда возвращается в этот пустой NSTextView. Если я нажимаю мышью, я должен дважды щелкнуть в открытом текстовом представлении, поэтому появится курсор. Если я перемещаю курсор со стрелками, то, опять же, я должен дважды нажимать клавишу со стрелкой.

Я пробовал курсор обновления, но ничего не происходит. Эта проблема возникает, если текстовый вид пуст и последний из них последователен. Где мне найти ответ? Поиск этого форума, Apple docs, googled it - ничего.

создать первый текст представления

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

Это похоже на ошибку инженеров Apple. Нашел то же поведение в других приложениях.

Смежные вопросы