From cfedaa892d79935c0d6c2e599c60e2af6e5ceaf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=B8vring?= Date: Wed, 15 Jun 2022 21:14:21 +0200 Subject: [PATCH] Fixes caret position not updated (#96) --- Sources/Runestone/TextView/TextInput/TextInputView.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sources/Runestone/TextView/TextInput/TextInputView.swift b/Sources/Runestone/TextView/TextInput/TextInputView.swift index a85da88fc..03e7ce4ac 100644 --- a/Sources/Runestone/TextView/TextInput/TextInputView.swift +++ b/Sources/Runestone/TextView/TextInput/TextInputView.swift @@ -598,14 +598,18 @@ final class TextInputView: UIView, UITextInput { override func paste(_ sender: Any?) { if let selectedTextRange = selectedTextRange, let string = UIPasteboard.general.string { let preparedText = prepareTextForInsertion(string) + inputDelegate?.selectionWillChange(self) replace(selectedTextRange, withText: preparedText) + inputDelegate?.selectionDidChange(self) } } override func cut(_ sender: Any?) { if let selectedTextRange = selectedTextRange, let text = text(in: selectedTextRange) { UIPasteboard.general.string = text + inputDelegate?.selectionWillChange(self) replace(selectedTextRange, withText: "") + inputDelegate?.selectionDidChange(self) } } @@ -1265,7 +1269,9 @@ extension TextInputView { return } markedRange = markedText.isEmpty ? nil : NSRange(location: range.location, length: markedText.utf16.count) + inputDelegate?.selectionWillChange(self) replaceText(in: range, with: markedText) + inputDelegate?.selectionDidChange(self) delegate?.textInputViewDidUpdateMarkedRange(self) }