IQKeyboardManager

在項(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è)置新的約束.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容