From 2b185a04f650a0fe62a4690354e245ff39f6ce91 Mon Sep 17 00:00:00 2001 From: Ryan Nystrom Date: Sat, 13 Oct 2018 23:04:20 -0400 Subject: [PATCH 1/3] update messageviewcontroller --- Podfile.lock | 2 +- Pods/Manifest.lock | 2 +- .../MessageAutocompleteController.swift | 1 + .../MessageViewController/MessageViewController.swift | 9 +++++---- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index e847b1695..68bf52acb 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: 5d30ee486237676ae1b2563a43d2cb5c81d6b66f :git: https://github.com/GitHawkApp/MessageViewController.git Squawk: :commit: 88d671bbe86e3c18d54e094fac97df12a3054d53 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index e847b1695..68bf52acb 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: 5d30ee486237676ae1b2563a43d2cb5c81d6b66f :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..f18b1ca95 100644 --- a/Pods/MessageViewController/MessageViewController/MessageAutocompleteController.swift +++ b/Pods/MessageViewController/MessageViewController/MessageAutocompleteController.swift @@ -176,6 +176,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/MessageViewController.swift b/Pods/MessageViewController/MessageViewController/MessageViewController.swift index 30b4d9866..2edcaed6c 100644 --- a/Pods/MessageViewController/MessageViewController/MessageViewController.swift +++ b/Pods/MessageViewController/MessageViewController/MessageViewController.swift @@ -126,11 +126,12 @@ open class MessageViewController: UIViewController, MessageAutocompleteControlle // required for the nested UITextView to layout its internals correctly messageView.layoutIfNeeded() + let frame = scrollView.frame scrollView.frame = CGRect( - x: bounds.minX, - y: bounds.minY, - width: bounds.width, - height: messageViewFrame.minY + x: frame.minX, + y: frame.minY, + width: frame.width, + height: messageViewFrame.minY - frame.minY ) messageAutocompleteController.layout(in: view, bottomY: messageViewFrame.minY) From 1b106430e7deeb7fea3fa26eed331c68cdc3db5b Mon Sep 17 00:00:00 2001 From: Ryan Nystrom Date: Sat, 13 Oct 2018 23:08:47 -0400 Subject: [PATCH 2/3] add latest update --- Podfile.lock | 2 +- Pods/Manifest.lock | 2 +- .../MessageAutocompleteController.swift | 2 ++ .../MessageViewController/MessageView.swift | 6 +++++- .../MessageViewController+MessageViewDelegate.swift | 2 +- .../MessageViewController.swift | 12 +++++++++++- 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 68bf52acb..8af0fb48f 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -163,7 +163,7 @@ CHECKOUT OPTIONS: :commit: 5c1c92b600f0d8094f22fff48e26ded323568194 :git: https://github.com/Instagram/IGListKit.git MessageViewController: - :commit: 5d30ee486237676ae1b2563a43d2cb5c81d6b66f + :commit: 41e1a67e2131c8ce2fb3284a976c51d60ddb5c0d :git: https://github.com/GitHawkApp/MessageViewController.git Squawk: :commit: 88d671bbe86e3c18d54e094fac97df12a3054d53 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 68bf52acb..8af0fb48f 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: 5d30ee486237676ae1b2563a43d2cb5c81d6b66f + :commit: 41e1a67e2131c8ce2fb3284a976c51d60ddb5c0d :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 f18b1ca95..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 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 2edcaed6c..11e0465b8 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 + let frame = scrollView.frame scrollView.frame = CGRect( x: frame.minX, @@ -134,6 +137,13 @@ open class MessageViewController: UIViewController, MessageAutocompleteControlle height: messageViewFrame.minY - frame.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() From d6939ccd16c1e21555a4019a3bc58820abd34572 Mon Sep 17 00:00:00 2001 From: Ryan Nystrom Date: Sat, 13 Oct 2018 23:20:44 -0400 Subject: [PATCH 3/3] update with revert --- Podfile.lock | 2 +- Pods/Manifest.lock | 2 +- .../MessageViewController/MessageViewController.swift | 9 ++++----- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 8af0fb48f..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: 41e1a67e2131c8ce2fb3284a976c51d60ddb5c0d + :commit: 949dc75cd86b831e14dd341658fc0b2f2e950f6d :git: https://github.com/GitHawkApp/MessageViewController.git Squawk: :commit: 88d671bbe86e3c18d54e094fac97df12a3054d53 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 8af0fb48f..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: 41e1a67e2131c8ce2fb3284a976c51d60ddb5c0d + :commit: 949dc75cd86b831e14dd341658fc0b2f2e950f6d :git: https://github.com/GitHawkApp/MessageViewController.git Squawk: :commit: 88d671bbe86e3c18d54e094fac97df12a3054d53 diff --git a/Pods/MessageViewController/MessageViewController/MessageViewController.swift b/Pods/MessageViewController/MessageViewController/MessageViewController.swift index 11e0465b8..16b4d44bf 100644 --- a/Pods/MessageViewController/MessageViewController/MessageViewController.swift +++ b/Pods/MessageViewController/MessageViewController/MessageViewController.swift @@ -129,12 +129,11 @@ open class MessageViewController: UIViewController, MessageAutocompleteControlle let originalOffset = scrollView.contentOffset let heightChange = scrollView.frame.height - messageViewFrame.minY - let frame = scrollView.frame scrollView.frame = CGRect( - x: frame.minX, - y: frame.minY, - width: frame.width, - height: messageViewFrame.minY - frame.minY + x: bounds.minX, + y: bounds.minY, + width: bounds.width, + height: messageViewFrame.minY ) if updateOffset, heightChange != 0 {