The code is still here and you can still clone it, however the library will not receive any more updates or support.
No more checking for keyboard notifications and parsing keyboard apperance info manually!
A small (but cool) tool for handling UIKeyboard appearing and disappearing in your view controllers.
github "nodes-ios/KeyboardHelper" ~> 3.0.0pod 'KeyboardHelper', '~> 3.0.0'
Last versions compatible with lower Swift versions:
Swift 4:
~> 2.0.0
Swift 3:== 1.2.1
Swift 2.3:== 0.10.0
Swift 2.2:== 0.9.4
Implement KeyboardHelperDelegate in your UIViewController.
class ViewController: UIViewController, KeyboardHelperDelegateAdd a KeyboardHelper private variable, initialize it and set the delegate.
private var keyboardHelper : KeyboardHelper?
func viewDidLoad() {
...
self.keyboardHelper = KeyboardHelper(delegate: self)
...
}Implement the two methods in the KeyboardHelperDelegate:
public func keyboardWillAppear(_ info: KeyboardHelper.KeyboardAppearanceInfo)
public func keyboardWillDisappear(_ info: KeyboardHelper.KeyboardAppearanceInfo)Both methods take as argument a KeyboardAppearanceInfo object, which is basically a wrapper over the userInfo dictionary of the UIKeyboardWillShowNotification and UIKeyboardWillHideNotification notifications.
One example of implementation for the two delegate methods is:
func keyboardWillAppear(_ info: KeyboardAppearanceInfo) {
UIView.animate(withDuration: TimeInterval(info.animationDuration),
delay: 0,
options: info.animationOptions,
animations: {
let insets = UIEdgeInsetsMake(0, 0, info.endFrame.size.height, 0)
self.scrollView.contentInset = insets
self.scrollView.scrollIndicatorInsets = insets
},
completion: nil)
}
func keyboardWillDisappear(_ info: KeyboardAppearanceInfo) {
UIView.animate(withDuration: TimeInterval(info.animationDuration),
delay: 0,
options: info.animationOptions,
animations: {
let insets = UIEdgeInsetsZero
self.scrollView.contentInset = insets
self.scrollView.scrollIndicatorInsets = insets
},
completion: nil)
}The KeyboardAppearanceInfo object has the following properties:
beginFrame: aCGRectcorresponding to the value forUIKeyboardFrameBeginUserInfoKeyendFrame: aCGRectcorresponding to the value forUIKeyboardFrameEndUserInfoKeybelongsToCurrentApp: aBoolcorresponding to the value forUIKeyboardIsLocalUserInfoKeyanimationDuration: aDoublecorresponding to the value forUIKeyboardAnimationDurationUserInfoKeyanimationCurve: aUIViewAnimationCurvecorresponding to the value forUIKeyboardAnimationCurveUserInfoKeyanimationOptions: aUIViewAnimationOptionsfrom the value ofUIKeyboardAnimationCurveUserInfoKey
KeyboardAppearanceInfo also has the convenience method animateAlong:completion:, which can be used like this:
func keyboardWillAppear(info: KeyboardAppearanceInfo) {
info.animateAlong({ () -> Void in
let insets = UIEdgeInsetsMake(0, 0, info.endFrame.size.height, 0)
self.scrollView.contentInset = insets
self.scrollView.scrollIndicatorInsets = insets
}) { finished in }to get the same effect as the initial keyboardWillAppear: implementation example above.
Made with ❤️ at Nodes.
KeyboardHelper is available under the MIT license. See the LICENSE file for more info.