Работа с серией 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/aw01oo0faajr4rn/Test.zip. Я сделал это с нуля, когда вы нажали клавишу Enter, он помещает второе текстовое представление, и вы можете видеть, что проблема возникает даже в новых чистых проектах.
Пожалуйста, сушите проблему до более простого примера, воспроизводящего проблему, с которой вы сталкиваетесь. –
Все готово! Проверьте –