方法一
點(diǎn)擊空白地方隱藏鍵盤(點(diǎn)擊的地方控件有UITableView/UICollectionView的情況 會(huì)有延遲职烧,或失效)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.獲取textField所在的父視圖self.view
[self.view endEditing:YES];
//2.直接調(diào)用 注銷第一響應(yīng)者
//[self.textField resignFirstResponder];
}
方法二
通過(guò)遵守UITextFieldDelegate 隱藏鍵盤
//1.遵守協(xié)議< UITextFieldDelegate >
//2.設(shè)置UITextField的鍵盤類型與返回鍵
field.returnKeyType = UIReturnKeyDone;
field.keyboardType = UIKeyboardTypeDefault;
注意 UIKeyboardType類型中以下幾種類無(wú)法設(shè)置返回鍵
UIKeyboardTypeNumberPad:
UIKeyboardTypePhonePad:
UIKeyboardTypeDecimalPad:
UIKeyboardTypeTwitter
//3.代碼
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//1.獲取textField所在的父視圖self.view
[self.view endEditing:YES];
//2.直接調(diào)用 注銷第一響應(yīng)者
//[textField resignFirstResponder];
return YES;
}
方法三使用第三方
1.ZYKeyboardUtil
創(chuàng)建一個(gè)ZYKeyboard對(duì)象笼才,為了讓其生存在整個(gè)頁(yè)面實(shí)現(xiàn)功能的時(shí)間段內(nèi)叉弦,讓你的controller持有他吧迄靠。
self.keyboardUtil = [[ZYKeyboardUtil alloc] init];
配置animateWhenKeyboardAppearAutomaticAnimBlock贩幻,即可全自動(dòng)處理鍵盤升降遮擋輸入控件問(wèn)題悦穿,且控件resignFirstResponder后自動(dòng)還原向瓷。
只需在Block里利用參數(shù)keyboardUtil調(diào)用adaptiveViewHandleWithController:adaptiveView:,第一個(gè)參數(shù)為當(dāng)前頁(yè)面controller根竿,第二個(gè)參數(shù)接收一個(gè)可變參數(shù)陵像,為當(dāng)前頁(yè)面內(nèi)的單個(gè)/多個(gè)輸入控件或者包裹輸入控件的View。
__weak ViewController *weakSelf = self;
[_keyboardUtil setAnimateWhenKeyboardAppearAutomaticAnimBlock:^(ZYKeyboardUtil *keyboardUtil) {
[keyboardUtil adaptiveViewHandleWithController:weakSelf adaptiveView:weakSelf.inputViewOne, weakSelf.inputViewSecond, weakSelf.inputViewThird, weakSelf.inputViewFourth, nil];
}];
2.IQKeyboardManager
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 鍵盤處理
// 1.開(kāi)啟鍵盤處理
[IQKeyboardManager sharedManager].enable = YES;
// 2.點(diǎn)擊背景回收鍵盤
[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
// 關(guān)閉鍵盤上方工具欄
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
}
總結(jié)對(duì)比
1.ZYKeyboardUtil
優(yōu)點(diǎn):可以避免 寇壳,UITextField位置較為靠下醒颖,彈出鍵盤后,會(huì)將導(dǎo)航欄 也一起頂上去問(wèn)題壳炎。
缺點(diǎn):代碼相對(duì)于 IQKeyboardManager泞歉,需要每個(gè)頁(yè)面都設(shè)置。
- IQKeyboardManager
優(yōu)點(diǎn): 代碼簡(jiǎn)潔,只需要在appledelegate.m中設(shè)置 幾句代碼 即可監(jiān)聽(tīng) 所有的有關(guān)鍵盤彈出問(wèn)題
缺點(diǎn): 如果UITextField位置較為靠下腰耙,彈出鍵盤后榛丢,會(huì)將導(dǎo)航欄 也一起頂上去,顯示效果 不理想