Keyboardy extends UIViewController
with few simple methods and provides delegate for handling keyboard appearance notifications.
UIKeyboardWillShowNotification
and UIKeyboardWillHideNotification
notifications.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 carthage
To 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 Keyboardy
to 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.