Перемещение ScrollView / Keyboard в положение курсора UITextView - PullRequest
0 голосов
/ 06 апреля 2019

Я работаю над прокруткой клавиатуры до текущей позиции курсора в UITextView.

Там я использую textViewDidChange так:

func textViewDidChange(_ textView: UITextView) {
        if let cursorPosition = textView.selectedTextRange?.end {

            let caretPositionRect = textView.caretRect(for: cursorPosition)
            print(caretPositionRect, "caret")
            DispatchQueue.main.async{ [weak self] in
                let pointsuperview = textView.convert(caretPositionRect, to: self?.vc?.mainView.scrollView)
                self?.vc?.mainView.scrollView.scrollRectToVisible(pointsuperview, animated: false)
                print(pointsuperview, "ps")
            }
        }
    }

Это работает, пока есть персонаж или я возвращаюсь. Но если я добавляю новую строку, нажимая ввод в последнюю строку, я получаю вывод, подобный этому:

(инф, инф, 0,0, 0,0) каретка

Когда я использую клавишу возврата, я снова получаю действительные значения.

допустимые значения выглядят так:

(4,0, 7,0, 2,0, 21,5) каретка

Тот же результат при использовании selectedTextRange.start

Я пытался решить этот вопрос: Получение и установка положения курсора UITextField и UITextView в Swift

...