在項(xiàng)目中,我們經(jīng)常會用到UITextField輸入框,但是當(dāng)輸入框在屏幕的下半部分的時候,就會遇到鍵盤遮擋住輸入框的問題,通常情況下我們會用通知中心,注冊關(guān)于鍵盤出現(xiàn)或者隱藏的通知,或者直接注冊改變鍵盤尺寸的通知.誠然,這些都是最常見的做法,但是今天給大家介紹一個更簡潔的做法,用一個第三方-----IQKeyboardManager.
這里是下載地址IQKeyboardManager,當(dāng)然你也可以直接使用Cocoapod.

先上一張效果圖
那么具體怎么使用呢?其實(shí)它的使用是非常簡單的,只需要在APP代理的入口方法內(nèi)寫一行代碼就可控制自動鍵盤處理事件在整個項(xiàng)目內(nèi)是否啟用。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//打開自動檢測鍵盤是否遮擋, 默認(rèn)值為NO.
[IQKeyboardManager sharedManager].enable = YES;
}
//如果產(chǎn)品需要當(dāng)鍵盤彈起時,點(diǎn)擊背景收起鍵盤,也是一行代碼解決。
[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
//是否需要隱藏Toolbar工具條
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
如果當(dāng)某一個輸入框特定不需要鍵盤上的工具條時,一行代碼
textField.inputAccessoryView = [[UIView alloc] init];
//當(dāng)某一個界面不需要自動鍵盤處理事件時,可以在視圖將要顯示和將要消失的時候調(diào)用關(guān)閉設(shè)置
- (void) viewWillAppear: (BOOL)animated {
//打開鍵盤事件相應(yīng)
[IQKeyboardManager sharedManager].enable = YES;
}
- (void) viewWillDisappear: (BOOL)animated {
//關(guān)閉鍵盤事件相應(yīng)
[IQKeyboardManager sharedManager].enable = NO;
}
//可以把toolbar右邊的done按鈕自定義標(biāo)題
[IQKeyboardManager sharedManager].toolbarDoneBarButtonItemText = @"123456";
//可以設(shè)置圖片
[IQKeyboardManager sharedManager].toolbarDoneBarButtonItemImage = [UIImage imageNamed:@"IQKeyboardManagerScreenshot"];
//設(shè)置done標(biāo)題字體已經(jīng)上下箭頭的顏色
[IQKeyboardManager sharedManager].shouldToolbarUsesTextFieldTintColor = NO;
[IQKeyboardManager sharedManager].toolbarTintColor = [UIColor redColor];
IQKeyBoardManager的右邊的Done按鈕的響應(yīng)事件doneAction 事件未公開API,不過可以通過代理
- (void)textFieldDidEndEditing:(UITextField *)textField
怎么樣,是不是覺得這個第三方很好用,但是這里有一個問題,那就是當(dāng)你存在導(dǎo)航欄的時候,使用IQKeyboardManager時,點(diǎn)擊textfield視圖向上滾動的時候造成導(dǎo)航欄欄消失,怎么解決呢?
-(void)loadView{
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
self.view = scrollView;
}
當(dāng)然上面這種處理方式只是你用純代碼開發(fā)的解決辦法,而當(dāng)你使用storyboard/xib的時候怎么處理呢? 使用storyboard/xib的時候會默認(rèn)設(shè)置view為根視圖,你只需要將其改為scrollView就OK了,當(dāng)然別忘了設(shè)置新的約束.