Fix cursor movement not working in compose text fields when emoji added

Removes workaround introduced in 8c4ef3caa6. This is no longer necessary
and autocorrect works fine without it since at least iOS 14.4.

Closes #118
This commit is contained in:
Shadowfacts 2021-04-05 18:30:37 -04:00
parent 8ea15d3bab
commit c737354ed3
2 changed files with 0 additions and 23 deletions

View File

@ -57,14 +57,6 @@ struct ComposeContentWarningTextField: UIViewRepresentable {
updateAutocompleteState(textField: textField) updateAutocompleteState(textField: textField)
} }
func textFieldDidChangeSelection(_ textField: UITextField) {
// Update text binding before potentially triggering SwiftUI view update.
// See comment in MainComposeTextView.Coordinator.textViewDidChangeSelection
text.wrappedValue = textField.text ?? ""
updateAutocompleteState(textField: textField)
}
func autocomplete(with string: String) { func autocomplete(with string: String) {
guard let textField = textField, guard let textField = textField,
let text = textField.text, let text = textField.text,

View File

@ -258,21 +258,6 @@ struct MainComposeWrappedTextView: UIViewRepresentable {
updateAutocompleteState() updateAutocompleteState()
} }
func textViewDidChangeSelection(_ textView: UITextView) {
// Update the value of the text binding.
// Sometimes, when the user accepts an autocomplete suggestion from the system keyboard, the system
// calls didChangeSelection before textDidChange, resulting in a loop where the updating the Tusker autocomplete
// state in didChangeSection (via updateAutocompleteState) triggers a new SwiftUI view update,
// but when that SwiftUI update is handled, the model still has the old text (from prior to accepting the autocomplete
// suggestion), meaning the UITextView's text gets set back to whatever it was prior to the system autocomplete.
// To work around that, we also update the text binding in didChangeSelection, to ensure that, if the autocomplete state
// does change and trigger a SwiftUI update, the binding will have the correct text that was produced by the system
// autocompletion.
text.wrappedValue = textView.text ?? ""
updateAutocompleteState()
}
func autocomplete(with string: String) { func autocomplete(with string: String) {
guard let textView = textView, guard let textView = textView,
let text = textView.text, let text = textView.text,