Keyboardy extends UIViewController with few simple methods and provides delegate for handling keyboard appearance notifications.
- Keyboardy is just wrapper on
UIKeyboardWillShowNotificationandUIKeyboardWillHideNotificationnotifications. - Supports both AutoLayout and frame-based animations.
- Swift implementation.
- Without any hacks like method swizzling and magic numbers (ex.,
curve << 16).
- Import Keyboardy module
import Keyboardy- Register for keyboard notifications
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
registerForKeyboardNotifications(self)
}- Unregister from keyboard notifications
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
unregisterFromKeyboardNotifications()
}- Implement
KeyboardStateDelegate
extension ViewController: KeyboardStateDelegate {
func keyboardWillTransition(_ state: KeyboardState) {
// keyboard will show or hide
}
func keyboardTransitionAnimation(_ state: KeyboardState) {
switch state {
case .activeWithHeight(let height):
textFieldContainerBottomConstraint.constant = height
case .hidden:
textFieldContainerBottomConstraint.constant = 0.0
}
view.layoutIfNeeded()
}
func keyboardDidTransition(_ state: KeyboardState) {
// keyboard animation finished
}
}To run the example project, clone the repo, and run pod install from the Example directory first.
Swift 5, iOS 8
Keyboardy is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "Keyboardy"Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthageTo integrate Keyboardy into your Xcode project using Carthage, specify it in your Cartfile:
github "podkovyrin/Keyboardy"
-
Add the following to your
Package.swift:.package(url: "https://github.com/podkovyrin/Keyboardy.git", .upToNextMajor(from: "0.2.7")),
-
Next, add
Keyboardyto your App targets dependencies like so:.target(name: "App", dependencies: ["Keyboardy"]),
-
Then run
accio update.
Andrew Podkovyrin, podkovyrin@gmail.com
Keyboardy is available under the MIT license. See the LICENSE file for more info.
