IQKeyboardManager是iOS中解決鍵盤彈起遮擋UITextField/UITextView的一種很實用的工具。無需輸入任何代碼,不須要額外的設置。使用IQKeyboardManager的你只須要將源文件添加到項目。git
這裏附上下載連接:https://github.com/hackiftekhar/IQKeyboardManagergithub
IQKeyboardManager支持Objective-C和swift,這裏建議實用Cocoapod安裝,很方便管理。swift
簡單總結一下IQKeyboardManager最重要的功能有如下幾點:app
1.當鍵盤遮擋輸入文本框的時候,自動上移View,使被遮擋的部分自動處於鍵盤的上方。ide
function1.gif工具
)
導入IQKeyboardManager後,默認全部的頁面都有了這個功能,若是你在哪個界面不想有這個效果能夠在當前界面控制器的生命週期方法中進行設置:code
#import <IQKeyboardManager.h>
- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [IQKeyboardManager sharedManager].enable = NO; } - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [IQKeyboardManager sharedManager].enable = YES; }
或者在 AppDelegate中註冊方法:生命週期
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[IQKeyboardManager sharedManager] disableInViewControllerClass:[ViewController class]]; return YES; }
2.在鍵盤上會自動添加一個工具條,工具條上有左箭頭和右箭頭用來切換的輸入文本框,還有完成按鈕用來收回鍵盤。圖片
function2.gifget
你也能夠不使用這個自動工具條,設置的代碼以下:
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
3.能夠將鍵盤上的return按鍵,變爲Next/Done按鍵,默認最後一個UITextField/UITextView的鍵盤return鍵變爲Done。順序是按照建立控件的前後順序,而不是從上到下的擺放順序。
function3.gif
設置的代碼以下:
#import <IQKeyboardReturnKeyHandler.h>
@implementation ViewController { IQKeyboardReturnKeyHandler *returnKeyHandler; } - (void)viewDidLoad { [super viewDidLoad]; returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self]; }
4.設置點擊背景收回鍵盤。
- (void)viewDidLoad { [super viewDidLoad]; [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES; }
5.若是你的視圖有導航欄,你不想上移View時,UINavigationBar消失,如function3.gif所示,你也能夠進行相應設置:
若是你使用的是storyboard or xib,只需將當前視圖視圖控制器中的UIView class變爲UIScrollView。
圖片.png
若是你使用的是代碼,你就須要覆蓋UIViewController中的'-(void)loadView' 方法:
-(void)loadView { UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.view = scrollView; }
以上就是本人對IQKeyboardManager的功能簡單理解,這個第三方庫還有一些其餘不怎麼經常使用的功能,之後用到會繼續更新。
文/chendong_(簡書做者) 原文連接:http://www.jianshu.com/p/9d7d246bd350/comments/1518291 著做權歸做者全部,轉載請聯繫做者得到受權,並標註「簡書做者」。