* feat: SPM support
Using InputAccessoryView dependency without Rx
* feat: SPM support
Add missing imports
* feat: Swift Package Manager support
Added Package description with Assets support for Swift 5.3
* feat: Swift Package Manager support
Remove .swiftpm temp files
* feat: Swift Package Manager support
Ignore .swiftpm temp files
* feat: Swift Package Manager support
Remove Package.resolved
* feat: Swift Package Manager support
Ignore Package.resolved
* feat: Swift Package Manager support
Assets in framework project
* feat: Swift Package Manager support
Fix tests
* feat: Swift Package Manager support
Fix tests
* feat: Swift Package Manager support
Fix tests
* feat: Swift Package Manager support
Try Bundle.module to get MessageKit bundle
* feat: Swift Package Manager support
SPM condition in bundle
* feat: Swift Package Manager support
Remove previous Swift 5.2 version Package.swift
* feat: Swift Package Manager support
Update Readme with SPM installation
* 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.