在iOS開發中,經常會出現在UITextField/UITextView中輸入東西的時候,彈起的鍵盤遮擋住了頁面下面,很不方便,IQKeyboardManager就是解決這一棘手問題的.而且IQKeyboardManager使用簡單,無需添加任何代碼,也不需要特別的設置,上手很快.只需要cocopods一下,輕松結局問題.
IQKeyboardManager支持Objective-C和swift,另外, IQKeyboardManager是全局性質的額,也就是你pod之后,整個工程都會具有這個特性,如果某個頁面不想這樣,那么在哪個頁面關閉這個功能就行.
下面簡單介紹一下常用的幾個小功能.
1.當鍵盤彈起的時候,自動上移View,使底部容易被遮擋的部分自動移動到鍵盤的上方。

當我們導入這個框架的時候,所有頁面默認都有這個效果.無需做任何修改,當我們想在某個頁面里不適用這個效果的時候,只要在這個頁面導入頭文件
#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; }
2.當鍵盤彈起的時候,我們希望點擊空白處,鍵盤可以收回,如下圖2效果.

當我們想實現圖2的效果時,首先導入頭文件
#import <IQKeyboardManager.h>
再加入以下代碼:
- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //點擊背景收回鍵盤 [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES; } - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; }
寫在viewWillAppear里面是為了在頁面顯示之前就有這個效果,提前加載.
3.在鍵盤上方有一個tooBar,當我們不想它顯示出來的時候.加入下面這句代碼.
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
- 鍵盤Return鍵的處理.
可以將鍵盤上Return鍵變為next鍵,點擊進入下一個輸入框,最后一個UITextField/UITextView的時候變為Done,點擊收起鍵盤.

首先導入頭文件:
#import <IQKeyboardReturnKeyHandler.h>
再寫一個IQKeyboardReturnKeyHandler成員變量,並實例化.如下:
@implementation XXSecondViewController { IQKeyboardReturnKeyHandler * _returnKeyHander; } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; _returnKeyHander = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self]; } - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; }
IQKeyboardManager的底層其實就是寫了一個sharedManager的單例,並重寫了load方法,使其優先加載.這里只是簡單常用的幾個方法,已經夠用.
這個框架功能強大,繼續研究底層.
作者:iOS_xuanhe
鏈接:https://www.jianshu.com/p/8412cfe5330f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。