IQKeyboardManager的使用


在iOS開發中,經常會出現在UITextField/UITextView中輸入東西的時候,彈起的鍵盤遮擋住了頁面下面,很不方便,IQKeyboardManager就是解決這一棘手問題的.而且IQKeyboardManager使用簡單,無需添加任何代碼,也不需要特別的設置,上手很快.只需要cocopods一下,輕松結局問題.

IQKeyboardManager支持Objective-C和swift,另外, IQKeyboardManager是全局性質的額,也就是你pod之后,整個工程都會具有這個特性,如果某個頁面不想這樣,那么在哪個頁面關閉這個功能就行.

下面簡單介紹一下常用的幾個小功能.

1.當鍵盤彈起的時候,自動上移View,使底部容易被遮擋的部分自動移動到鍵盤的上方。

 
圖1.gif

當我們導入這個框架的時候,所有頁面默認都有這個效果.無需做任何修改,當我們想在某個頁面里不適用這個效果的時候,只要在這個頁面導入頭文件

#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.gif

當我們想實現圖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; 
  1. 鍵盤Return鍵的處理.
    可以將鍵盤上Return鍵變為next鍵,點擊進入下一個輸入框,最后一個UITextField/UITextView的時候變為Done,點擊收起鍵盤.
 
圖3.gif

首先導入頭文件:

#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方法,使其優先加載.這里只是簡單常用的幾個方法,已經夠用.
這個框架功能強大,繼續研究底層.

最后附上下載鏈接:https://github.com/hackiftekhar/IQKeyboardManager



作者:iOS_xuanhe
鏈接:https://www.jianshu.com/p/8412cfe5330f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM