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
NgKeyboardTrackerfolder 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
NgKeyboardTrackerDelegateprotocol. - 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 fromanimationCurvefor 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
loadViewto set custom UIView implementation. - Make sure to call the custom view's
becomeFirstResponder.
The custom view:
- Create
NgPseudoInputAccessoryViewCoordinatorby 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
NgKeyboardTrackerinlayoutSubviews.
P.S. See demo application for example.