diff --git a/SlackTextViewController.podspec b/SlackTextViewController.podspec
index 9eb8d4d5..705930a2 100644
--- a/SlackTextViewController.podspec
+++ b/SlackTextViewController.podspec
@@ -1,4 +1,4 @@
-@version = "1.9.8-bw"
+@version = "1.9.9-bw"
Pod::Spec.new do |s|
s.name = "SlackTextViewController"
diff --git a/SlackTextViewController/SlackTextViewController/Info.plist b/SlackTextViewController/SlackTextViewController/Info.plist
index 6ce6f3e3..691c23b3 100644
--- a/SlackTextViewController/SlackTextViewController/Info.plist
+++ b/SlackTextViewController/SlackTextViewController/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 1.9.8-bw
+ 1.9.9-bw
CFBundleSignature
????
CFBundleVersion
diff --git a/Source/SLKTextViewController.m b/Source/SLKTextViewController.m
index ab4c77d5..ef8d8c9f 100644
--- a/Source/SLKTextViewController.m
+++ b/Source/SLKTextViewController.m
@@ -28,6 +28,7 @@ @interface SLKTextViewController ()
{
CGPoint _scrollViewOffsetBeforeDragging;
CGFloat _keyboardHeightBeforeDragging;
+ CGRect _cachedKeyboardRect;
}
// The shared scrollView pointer, either a tableView or collectionView
@@ -158,6 +159,8 @@ - (void)slk_commonInit
self.automaticallyAdjustsScrollViewInsets = YES;
self.extendedLayoutIncludesOpaqueBars = YES;
+
+ _cachedKeyboardRect = CGRectNull;
}
@@ -241,7 +244,7 @@ - (void)viewSafeAreaInsetsDidChange
{
[super viewSafeAreaInsetsDidChange];
- [self slk_updateViewConstraints];
+ [self slk_updateViewConstraintsFromCachedKeyboard];
}
@@ -396,10 +399,10 @@ - (CGFloat)slk_appropriateKeyboardHeightFromNotification:(NSNotification *)notif
if ([self ignoreTextInputbarAdjustment]) {
return [self slk_appropriateBottomMargin];
}
-
- CGRect keyboardRect = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
-
- return [self slk_appropriateKeyboardHeightFromRect:keyboardRect];
+
+ _cachedKeyboardRect = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
+
+ return [self slk_appropriateKeyboardHeightFromRect:_cachedKeyboardRect];
}
- (CGFloat)slk_appropriateKeyboardHeightFromRect:(CGRect)rect
@@ -588,16 +591,18 @@ - (void)setBounces:(BOOL)bounces
}
- (void)slk_updateInsetAdjustmentBehavior
+{
{
- // Deactivate automatic scrollView adjustment for inverted table view
- if (@available(iOS 11.0, *)) {
- if (self.isInverted) {
- _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
- } else {
- _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
- }
+{
+ // Deactivate automatic scrollView adjustment for inverted table view
+ if (@available(iOS 11.0, *)) {
+ if (self.isInverted) {
+ _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
+ } else {
+ _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
}
}
+}
- (BOOL)slk_updateKeyboardStatus:(SLKKeyboardStatus)status
{
@@ -1345,7 +1350,7 @@ - (void)didPressEscapeKey:(UIKeyCommand *)keyCommand
else if (_textInputbar.isEditing) {
[self didCancelTextEditing:keyCommand];
}
-
+
CGFloat bottomMargin = [self slk_appropriateBottomMargin];
if ([self ignoreTextInputbarAdjustment] || ([self.textView isFirstResponder] && self.keyboardHC.constant == bottomMargin)) {
@@ -1399,6 +1404,8 @@ - (void)slk_willShowOrHideKeyboard:(NSNotification *)notification
// Programatically stops scrolling before updating the view constraints (to avoid scrolling glitch).
if (status == SLKKeyboardStatusWillShow) {
[self.scrollViewProxy slk_stopScrolling];
+ } else if (status == SLKKeyboardStatusWillHide) {
+ _cachedKeyboardRect = CGRectNull;
}
// Stores the previous keyboard height
@@ -1478,6 +1485,7 @@ - (void)slk_didShowOrHideKeyboard:(NSNotification *)notification
if (!self.isViewVisible) {
if (status == SLKKeyboardStatusDidHide && self.keyboardStatus == SLKKeyboardStatusWillHide) {
// Even if the view isn't visible anymore, let's still continue to update all states.
+ _cachedKeyboardRect = CGRectNull;
}
else {
return;
@@ -2287,6 +2295,18 @@ - (void)slk_updateViewConstraints
[super updateViewConstraints];
}
+- (void)slk_updateViewConstraintsFromCachedKeyboard
+{
+ self.textInputbarHC.constant = self.textInputbar.minimumInputbarHeight;
+ self.scrollViewHC.constant = [self slk_appropriateScrollViewHeight];
+ self.keyboardHC.constant = [self slk_appropriateKeyboardHeightFromRect:_cachedKeyboardRect];
+
+ if (_textInputbar.isEditing) {
+ self.textInputbarHC.constant += self.textInputbar.editorContentViewHeight;
+ }
+
+ [super updateViewConstraints];
+}
#pragma mark - Keyboard Command registration