|
|
|
@ -291,9 +291,26 @@ const CGFloat kMaxTextViewHeight = 98;
|
|
|
|
|
|
|
|
|
|
self.inputTextView.text = value;
|
|
|
|
|
|
|
|
|
|
[self ensureShouldShowVoiceMemoButtonAnimated:isAnimated doLayout:YES];
|
|
|
|
|
// It's important that we set the textViewHeight before
|
|
|
|
|
// doing any animation in `ensureShouldShowVoiceMemoButtonAnimated`
|
|
|
|
|
// Otherwise, the resultant keyboard frame posted in `keyboardWillChangeFrame`
|
|
|
|
|
// could reflect the inputTextView height *before* the new text was set.
|
|
|
|
|
//
|
|
|
|
|
// This bug was surfaced to the user as:
|
|
|
|
|
// - have a quoted reply draft in the input toolbar
|
|
|
|
|
// - type a multiline message
|
|
|
|
|
// - hit send
|
|
|
|
|
// - quoted reply preview and message text is cleared
|
|
|
|
|
// - input toolbar is shrunk to it's expected empty-text height
|
|
|
|
|
// - *but* the conversation's bottom content inset was too large. Specifically, it was
|
|
|
|
|
// still sized as if the input textview was multiple lines.
|
|
|
|
|
// Presumably this bug only surfaced when an animation coincides with more complicated layout
|
|
|
|
|
// changes (in this case while simultaneous with removing quoted reply subviews, hiding the
|
|
|
|
|
// wrapper view *and* changing the height of the input textView
|
|
|
|
|
[self ensureTextViewHeight];
|
|
|
|
|
[self updateInputLinkPreview];
|
|
|
|
|
|
|
|
|
|
[self ensureShouldShowVoiceMemoButtonAnimated:isAnimated doLayout:YES];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)ensureTextViewHeight
|
|
|
|
|