Objective-c library for tracking keyboard in iOS apps.
If you are using CocoaPods, add to your Podfile:
pod 'NgKeyboardTracker'
To manually add to your projects:
- Add files in
NgKeyboardTracker
folder to your project. - Add these frameworks to your project:
UIKit
.
NgKeyboardTracker
encapsulates keyboard tracking for iOS apps.
It provides convenience to query keyboard's properties anywhere in your application.
You can also use NgKeyboardTracker
to implement iMessage's text input behavior on iOS 7 (UIScrollViewKeyboardDismissModeInteractive
+ persistent inputAccessoryView
) using NgPseudoInputAccessoryViewCoordinator
.
In your application delegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[NgKeyboardTracker sharedTracker] start]; // start tracking
return YES;
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
[[NgKeyboardTracker sharedTracker] stop]; // stop tracking
}
- Implement
NgKeyboardTrackerDelegate
protocol. - Register as delegate by calling
-addDelegate:
method - Make sure to call
-removeDelegate:
to stop receiving keyboard updates
Keyboard tracker's properties:
appearanceState
: current appearance statebeginFrame
: last known begin frameendFrame
: last known framecurrentFrame
: last known current keyboard's frameanimationDuration
: last known animation durationanimationCurve
: last known animation curveanimationOptions
: derived fromanimationCurve
for convenience
P.S. keyboard's frame.size.height
system's keyboard height plus inputAccessoryView
height.
NgPseudoInputAccessoryViewCoordinator
is NgKeyboardTracker
extension that makes it easier to implement iMessage's text input behavior in iOS 7 with UIScrollViewKeyboardDismissModeInteractive
and persistent inputAccessoryView
.
The view controller:
- Override
loadView
to set custom UIView implementation. - Make sure to call the custom view's
becomeFirstResponder
.
The custom view:
- Create
NgPseudoInputAccessoryViewCoordinator
by calling-createPseudoInputAccessoryViewCoordinator
. - Overrides
-canBecomeFirstResponder
, returnsYES
. - Overrides
-inputAccessoryView
, returns coordinator'spseudoInputAccessoryView
. - Set
UIScrollView
's keyboard dismiss mode toUIScrollViewKeyboardDismissModeInteractive
. - Set desired height of input accessory view with
-setPseudoInputAccessoryViewHeight:
. - Layout keyboard's bar accordingly using information from
NgKeyboardTracker
inlayoutSubviews
.
P.S. See demo application for example.