Latest 0.0.3
Homepage https://github.com/htxs/KeyboardRobin
License MIT
Platforms ios 6.0, requires ARC
Authors

鸣谢

该项目是改写了 @nixzhu 作者的 KeybaordMan Swift 版本,特此感谢作者 @nixzhu。因为工作需要在 Objective-C 中实现,所以用 Objective-C 重写了一遍,大家各取所需。

We may need keyboard infomation from keyboard notification to do animation, but the approach is complicated and easy to make mistakes.

But KeyboardRobin will make it simple & easy.

Example

#import "KeyboardRobin.h"

Do animation with keyboard appear/disappear:

self.keyboardRobin = [[KeyboardRobin alloc] init];
__weak typeof (self) weak_self = self;

self.keyboardRobin.animateWhenKeyboardAppear = ^(NSInteger appearPostIndex, CGFloat keyboardHeight, CGFloat keyboardHeightIncrement) {
    NSLog(@"Keyboard appear: appearPostIndex:%@, keyboardHeight:%@, keyboardHeightIncrement:%@", @(appearPostIndex), @(keyboardHeight), @(keyboardHeightIncrement));

    //update tableView's contentOffset
    CGPoint tempContentOffset = weak_self.tableView.contentOffset;
    tempContentOffset.y += keyboardHeightIncrement;
    weak_self.tableView.contentOffset = tempContentOffset;

    //update tableView's contentInset
    UIEdgeInsets tempInset = weak_self.tableView.contentInset;
    tempInset.bottom = keyboardHeight + CGRectGetHeight(weak_self.toolBar.frame);
    weak_self.tableView.contentInset = tempInset;

    //update toolBar's bottom constraint relative to superview
    weak_self.toolBarBottomConstraint.constant = keyboardHeight;

    [weak_self.view layoutIfNeeded];
};

self.keyboardRobin.animateWhenKeyboardDisappear = ^(CGFloat keyboardHeight) {
    NSLog(@"Keyboard disappear: keyboardHeight:%@", @(keyboardHeight));

    //update tableView's contentOffset
    CGPoint tempContentOffset = weak_self.tableView.contentOffset;
    tempContentOffset.y -= keyboardHeight;
    weak_self.tableView.contentOffset = tempContentOffset;

    //update tableView's contentInset
    UIEdgeInsets tempInset = weak_self.tableView.contentInset;
    tempInset.bottom = CGRectGetHeight(weak_self.toolBar.frame);
    weak_self.tableView.contentInset = tempInset;

    //update toolBar's bottom constraint relative to superview
    weak_self.toolBarBottomConstraint.constant = 0;

    [weak_self.view layoutIfNeeded];
};

For more specific information, you can use keyboardInfo that KeyboardRobin post:

self.keyboardRobin.postKeyboardInfo = ^(KeyboardRobin *keyboardRobin, KeyboardInfo keyboardInfo) {
    // TODO
}

Check the demo for more information.

原作者的中文介绍

Installation

Feel free to drag KeyboardRobin.h and KeyboardRobin.m to your iOS Project. But it’s recommended to use CocoaPods.

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ [sudo] gem install cocoapods

To integrate KeyboardRobin into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'

pod 'KeyboardRobin', '~> 0.0.3'

Then, run the following command:

$ pod install

You should open the {Project}.xcworkspace instead of the {Project}.xcodeproj after you installed anything from CocoaPods.

For more information about how to use CocoaPods, I suggest this tutorial.

License

KeyboardRobin is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "KeyboardRobin",
    "version": "0.0.3",
    "summary": "KeyboardRobin help you make keyboard animation.",
    "description": "                              We may need keyboard infomation from keyboard notification to do animation,n                              but the approach is complicated and easy to make mistakes.n                              But KeyboardRobin will make it simple & easy.n",
    "homepage": "https://github.com/htxs/KeyboardRobin",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "tianjie": "[email protected]"
    },
    "platforms": {
        "ios": "6.0"
    },
    "source": {
        "git": "https://github.com/htxs/KeyboardRobin.git",
        "tag": "0.0.3"
    },
    "source_files": "KeyboardRobin/*.{h,m}",
    "requires_arc": true
}

Pin It on Pinterest

Share This