Keynode
Why
Using UIScrollViewKeyboardDismissMode
added in iOS7, interactive keyboard operation became possible. But, it only works on UIScrollView
.
Keynode
is able to interactive operate all inputView
that appear as FirstResponder
.
Appetize's Demo
UITextField |
UITextField |
UIPickerView |
---|---|---|
Requirements
- Swift 4.2
- iOS 9.0 or later
How to Install
CocoaPods
Add the following to your Podfile
:
pod "Keynode"
Carthage
Add the following to your Cartfile
:
github "KyoheiG3/Keynode"
Usage
Function
func willAnimate(_ handler: @escaping (Bool, CGRect) -> Swift.Void) -> Keynode.Keynode
- To be called just before the animation.
func animations(_ handler: @escaping (Bool, CGRect) -> Swift.Void) -> Keynode.Keynode
- To be called when the display switching animation.
- It is also called at the time of the keyboard operation of the scroll gesture.
func onCompleted(_ handler: @escaping (Bool, UIResponder?, UIView?) -> Swift.Void) -> Keynode.Keynode
- To be called at the end animation.
func setResponder(responder: UIResponder)
- Can set the responder.
Variable
var isGesturePanningEnabled: Bool
- Set
false
if needn't pan the Keyboard with scrolling gesture. - Default is
true
.
var needsToChangeInsetAutomatically: Bool
- Set
false
if needn't change content inset ofUIScrollView
when opened the Keyboard. - Default is
true
.
var defaultInsetBottom: CGFloat
- Change bottom of
contentInset
if needed. - Default is
0
var gestureOffset: CGFloat
- Such as when there is a
toolbar
, you can specify the offset of when closing the keyboard with scroll gesture. - If the value is not set, the value specified in the
defaultInsetBottom
will be used.
Extension
extension NSNotification.Name {
static let UIResponderBecomeFirstResponder: Notification.Name
}
- Notification name for become first responder.
extension UIApplication {
func needsNotificationFromFirstResponder(_ from: Swift.AnyObject?)
}
- Receive the notification from first responder when the function executed.
Caution
- It might not work if the specification has been changed. however it will be solved in the earliest possible stage.
iOS9.0
~iOS12.0
is confirmed operation.
Acknowledgements
- Inspired by DAKeyboardControl in danielamitay.
Author
Kyohei Ito
Follow me
LICENSE
Under the MIT license. See LICENSE file for details.