From ca50733ac5e0dc64f641e24151634145e7bdbb20 Mon Sep 17 00:00:00 2001 From: Ryan Nystrom Date: Thu, 19 Apr 2018 14:33:59 -0400 Subject: [PATCH] Revert "Input customization point (#54)" This reverts commit f359405c765b4c69a747e71d3cc796500687e383. --- .../MessageAutocompleteController.swift | 6 +----- MessageViewController/MessageTextView.swift | 11 +++-------- MessageViewController/MessageView.swift | 4 +--- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/MessageViewController/MessageAutocompleteController.swift b/MessageViewController/MessageAutocompleteController.swift index e535e46..806eb38 100644 --- a/MessageViewController/MessageAutocompleteController.swift +++ b/MessageViewController/MessageAutocompleteController.swift @@ -233,7 +233,7 @@ public final class MessageAutocompleteController: MessageTextViewListener { preserveTypingAttributes(for: textView) } - public func willChangeText(textView: MessageTextView, inRange range: NSRange, to: String) -> Bool { + public func willChangeRange(textView: MessageTextView, to range: NSRange) { // range.length == 1: Remove single character // range.lowerBound < textView.selectedRange.lowerBound: Ignore trying to delete @@ -248,7 +248,6 @@ public final class MessageAutocompleteController: MessageTextViewListener { if let isAutocomplete = attribute[NSAttributedAutocompleteKey] as? Bool, isAutocomplete { // Remove the autocompleted substring let lowerRange = NSRange(location: 0, length: range.location + 1) - var shouldPreserveTypedText = true textView.attributedText.enumerateAttribute(NSAttributedAutocompleteKey, in: lowerRange, options: .reverse, using: { (_, range, stop) in // Only delete the first found range @@ -259,12 +258,9 @@ public final class MessageAutocompleteController: MessageTextViewListener { textView.selectedRange = NSRange(location: range.location, length: 0) self.textView.textViewDidChange(textView) self.preserveTypingAttributes(for: textView) - shouldPreserveTypedText = false }) - return shouldPreserveTypedText } } - return true } } diff --git a/MessageViewController/MessageTextView.swift b/MessageViewController/MessageTextView.swift index 82c9dae..3399d65 100644 --- a/MessageViewController/MessageTextView.swift +++ b/MessageViewController/MessageTextView.swift @@ -10,7 +10,7 @@ import UIKit public protocol MessageTextViewListener: class { func didChange(textView: MessageTextView) func didChangeSelection(textView: MessageTextView) - func willChangeText(textView: MessageTextView, inRange: NSRange, to: String) -> Bool + func willChangeRange(textView: MessageTextView, to range: NSRange) } open class MessageTextView: UITextView, UITextViewDelegate { @@ -134,13 +134,8 @@ open class MessageTextView: UITextView, UITextViewDelegate { } public func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { - // If listener changes text then subsequent listeners will probably get incorrect affected range - // and text as they were changed by previous listener. So be careful playing with textView - var shouldChange = true - // if at least one listener changes text and needs to ignore typed text then this method returns - // that just typed text needs to be ignored - enumerateListeners { shouldChange = shouldChange && $0.willChangeText(textView: self, inRange: range, to: text) } - return shouldChange + enumerateListeners { $0.willChangeRange(textView: self, to: range) } + return true } } diff --git a/MessageViewController/MessageView.swift b/MessageViewController/MessageView.swift index bde3ec7..3f432e0 100644 --- a/MessageViewController/MessageView.swift +++ b/MessageViewController/MessageView.swift @@ -361,8 +361,6 @@ public final class MessageView: UIView, MessageTextViewListener { delegate?.selectionDidChange(messageView: self) } - public func willChangeText(textView: MessageTextView, inRange: NSRange, to: String) -> Bool { - return true - } + public func willChangeRange(textView: MessageTextView, to range: NSRange) {} }