* Remove MessageInputBar files and change build settings
* Conditional imports to allow for builds without MessageInputBar
* Update Cardfile
* Specify Version in Cartfile for MessageInputBar
* Remove conditional imports in favor of Carthage for local development
* Additional `import MessageInputBar`
* Remove `MessageInputBar` from Cartfile.private
* Bump MessageInputBar version
* Add Cartfile
* Tweak build settings
* Specify import of MessageInputBar for Carthage
This change provides better handling of keyboard frames. It copes with different values of UIViewController.edgesForExtendedLayout, UIScrollView.contentInsetAdjumentBehavior, view controller containment scenarios and undocked keyboards, and uses cleaner code.
Improvements and fixes in this change:
1. Translates keyboard frame from screen coordinates into view controller coordinates. They aren’t the same thing when containment is involved, or edgesForExtendedLayout does not include .top.
2. Avoids special casing any iPhone models and avoids dealing with safeAreaInsets manually. In iOS 11, UIScrollView may behave differently depending on contentInsetAdjumentBehavior, and the old code incorrectly assumed that the mode is .always (while it is in fact is .automatic) and that no extra safe area insets have been introduced at the bottom edge. Best part, we don’t have to deal with any of this at all, we can offload the logic to UIScrollView itself by looking at the difference between adjustedContentInset and contentInset.
3. Handles view controller containment and undocked keyboards by taking into account an intersection of the scroll view frame and the keyboard’s frame. I think Apple demoes this in one of the WWDC videos, but I couldn’t find which one (or if I’m misremembering). Regardless, this technique makes sure we compute and use a sensible number.
There’s also a couple of extra renames that make the intention of the modified code clearer.