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.
privatevarkeyboardHelper:KeyboardHelper?func viewDidLoad(){...self.keyboardHelper =KeyboardHelper(delegate:self)...}Implement the two methods in the KeyboardHelperDelegate:
publicfunc 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:{letinsets=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:{letinsets= 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({()->Voidinletinsets=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.