 		if newItems.count != items?.count {
 			setItems(newItems, animated: true)
 		}
-		
-		UIView.animateWithDuration(0.15) { [weak self] in
-			self?.setNeedsLayout()
-			self?.layoutIfNeeded()
-		}
+
+        if !CGSizeEqualToSize(textView.frame.size, appropriateSizeForTextView()) {
+            UIView.animateWithDuration(0.15) { [weak self] in
+                self?.setNeedsLayout()
+                self?.layoutIfNeeded()
+            }
+        }
 	}
 	
 	// MARK: - TextInputAccessoryViewDelegate -

		
		activityIndicatorBarButtonItem.width = sendButtonBarButtonItem.width
		
		let sendButtonWith: CGFloat = items!.contains(sendButtonBarButtonItem) ? sendButton.frame.size.width : 0
		let activityIndicatorWidth: CGFloat = items!.contains(activityIndicatorBarButtonItem) ? sendButton.frame.size.width : 0
		// WTF don't hardcode 35, use constraintWithAttribute instead
		let textViewWidth: CGFloat = frame.size.width - (sendButtonWith + activityIndicatorWidth) - 35
		var textViewHeight: CGFloat = textView.sizeThatFits(CGSizeMake(textViewWidth, CGFloat.max)).height
		textView.scrollEnabled = textViewHeight > maxTextHeight ? true : false
		textViewHeight = textViewHeight > maxTextHeight ? maxTextHeight : textViewHeight
		
        let newTextViewRect = CGRectMake(textViewPadding, textViewPadding, textViewWidth, textViewHeight)
        
        if !CGRectEqualToRect(textView.frame, newTextViewRect) {
            textView.frame = newTextViewRect
        }
		
		constraintWithAttribute(.Height)?.constant = textView.frame.size.height + textViewPadding * 2
        

            
            // iOS9 automatically adjusts insets of scrollview
            if UIDevice.currentDevice().systemVersionGreaterOrEqualTo("9") {
                newInset.bottom = appropriateTextViewSize.height + (2 * textViewPadding)
            }
            else {
                newInset.bottom = appropriateTextViewSize.height + (2 * textViewPadding) + keyboardVisibleHeight
            }
            
			scrollView.contentInset = newInset
