diff --git a/Podfile.lock b/Podfile.lock index e847b1695..bfca8197c 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -163,7 +163,7 @@ CHECKOUT OPTIONS: :commit: 5c1c92b600f0d8094f22fff48e26ded323568194 :git: https://github.com/Instagram/IGListKit.git MessageViewController: - :commit: 97e198895e309bda0b4ea30a5ac50a16fe6ef8ac + :commit: 949dc75cd86b831e14dd341658fc0b2f2e950f6d :git: https://github.com/GitHawkApp/MessageViewController.git Squawk: :commit: 88d671bbe86e3c18d54e094fac97df12a3054d53 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index e847b1695..bfca8197c 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -163,7 +163,7 @@ CHECKOUT OPTIONS: :commit: 5c1c92b600f0d8094f22fff48e26ded323568194 :git: https://github.com/Instagram/IGListKit.git MessageViewController: - :commit: 97e198895e309bda0b4ea30a5ac50a16fe6ef8ac + :commit: 949dc75cd86b831e14dd341658fc0b2f2e950f6d :git: https://github.com/GitHawkApp/MessageViewController.git Squawk: :commit: 88d671bbe86e3c18d54e094fac97df12a3054d53 diff --git a/Pods/MessageViewController/MessageViewController/MessageAutocompleteController.swift b/Pods/MessageViewController/MessageViewController/MessageAutocompleteController.swift index 4325dbede..a0491813e 100644 --- a/Pods/MessageViewController/MessageViewController/MessageAutocompleteController.swift +++ b/Pods/MessageViewController/MessageViewController/MessageAutocompleteController.swift @@ -80,6 +80,8 @@ public final class MessageAutocompleteController: MessageTextViewListener { name: .UIKeyboardWillChangeFrame, object: nil ) + + preserveTypingAttributes(for: textView) } // MARK: Public API @@ -176,6 +178,7 @@ public final class MessageAutocompleteController: MessageTextViewListener { } public func registerAutocomplete(prefix: String, attributes: [NSAttributedStringKey: Any]) { + registeredPrefixes.insert(prefix) autocompleteTextAttributes[prefix] = attributes autocompleteTextAttributes[prefix]?[.paragraphStyle] = paragraphStyle } diff --git a/Pods/MessageViewController/MessageViewController/MessageView.swift b/Pods/MessageViewController/MessageViewController/MessageView.swift index 935d001ad..f856c2025 100644 --- a/Pods/MessageViewController/MessageViewController/MessageView.swift +++ b/Pods/MessageViewController/MessageViewController/MessageView.swift @@ -22,6 +22,7 @@ public final class MessageView: UIView, MessageTextViewListener { internal var leftButtonInset: CGFloat = 0 internal var rightButtonInset: CGFloat = 0 internal var ignoreLineHeight = false + internal var suppressKVO = false public enum ButtonPosition { case left @@ -308,7 +309,10 @@ public final class MessageView: UIView, MessageTextViewListener { width: safeBounds.width - leftButtonMaxX - rightButtonSize.width - rightButtonInset, height: textViewHeight ) + + suppressKVO = true textView.frame = textViewFrame + suppressKVO = false // adjust by bottom offset so content is flush w/ text view let rightButtonFrame = CGRect( @@ -328,7 +332,7 @@ public final class MessageView: UIView, MessageTextViewListener { } public override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { - if keyPath == UITextViewContentSizeKeyPath { + if suppressKVO == false, keyPath == UITextViewContentSizeKeyPath { textViewContentSizeDidChange() } } diff --git a/Pods/MessageViewController/MessageViewController/MessageViewController+MessageViewDelegate.swift b/Pods/MessageViewController/MessageViewController/MessageViewController+MessageViewDelegate.swift index 397ede503..eac7fe265 100644 --- a/Pods/MessageViewController/MessageViewController/MessageViewController+MessageViewDelegate.swift +++ b/Pods/MessageViewController/MessageViewController/MessageViewController+MessageViewDelegate.swift @@ -12,7 +12,7 @@ extension MessageViewController: MessageViewDelegate { internal func sizeDidChange(messageView: MessageView) { UIView.animate(withDuration: 0.25) { - self.layout() + self.layout(updateOffset: true) } } diff --git a/Pods/MessageViewController/MessageViewController/MessageViewController.swift b/Pods/MessageViewController/MessageViewController/MessageViewController.swift index 30b4d9866..16b4d44bf 100644 --- a/Pods/MessageViewController/MessageViewController/MessageViewController.swift +++ b/Pods/MessageViewController/MessageViewController/MessageViewController.swift @@ -106,7 +106,7 @@ open class MessageViewController: UIViewController, MessageAutocompleteControlle } } - internal func layout() { + internal func layout(updateOffset: Bool = false) { guard let scrollView = self.scrollView else { return } let bounds = view.bounds @@ -126,6 +126,9 @@ open class MessageViewController: UIViewController, MessageAutocompleteControlle // required for the nested UITextView to layout its internals correctly messageView.layoutIfNeeded() + let originalOffset = scrollView.contentOffset + let heightChange = scrollView.frame.height - messageViewFrame.minY + scrollView.frame = CGRect( x: bounds.minX, y: bounds.minY, @@ -133,6 +136,13 @@ open class MessageViewController: UIViewController, MessageAutocompleteControlle height: messageViewFrame.minY ) + if updateOffset, heightChange != 0 { + scrollView.contentOffset = CGPoint( + x: originalOffset.x, + y: max(originalOffset.y + heightChange, -scrollView.util_adjustedContentInset.top) + ) + } + messageAutocompleteController.layout(in: view, bottomY: messageViewFrame.minY) didLayout()