Challenge time!
Imagine we have 2 content views:
Instead of using a UIScrollView you would very likely be better off with a UITableView. It also might be better to not using auto-layout. At least, I've found it better to not use it for these sorts of manipulations.
Look into the following:
UITextView textViewDidChange
sizeThatFits (limiting width and using FLT_MAX for height). Change the frame, not the contentSize.UITableView beginUpdates/endUpdates to update the table viewUIKeyboardWillShowNotification notification
NSNotification that comes through, you can call userInfo (a Dictionary), and the key UIKeyboardFrameBeginUserInfoKey. Reduce the frame of the table view based on the height of the size of the keyboard. UIKeyboardWillHideNotification notification
To have the footer view stick to the bottom, you could add an intermediate cell to the table view, and have it change size depending on the size of the text and whether the keyboard is visible.
The above will definitely require some extra manipulation on your part - I don't fully understand all of your cases, but it should definitely get you started.