第三方庫 IQKeyboardManager使用之整理

smile麗語發表於2018-01-03

IQKeyboardManager是iOS中解決鍵盤彈起遮擋UITextField/UITextView的一種很實用的工具。 之前我一直是新增手勢去 收起鍵盤 或者 令檢視退出編輯狀態, 現在使用這個則無需輸入任何程式碼,不需要額外的設定。

這個庫預設支援UITextField、UITextView、UIWebView、UIScrollView、UITableView、UICollectionView.

使用IQKeyboardManager, 只需要將原始檔新增到專案。

第三方庫 IQKeyboardManager使用之整理

由於這個庫是一個單例,它一旦生效,全專案任何介面都有效。 控制自動鍵盤處理事件在整個專案內是否啟用生效, 則需在AppDelegate裡設定.

#import "IQKeyboardManager.h"
複製程式碼

iOS delegate內應用入口:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 關閉設定為NO, 預設值為NO.
    [IQKeyboardManager sharedManager].enable = YES;
}
複製程式碼

其他相關應用如下展示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 使用智慧鍵盤
    IQKeyboardManager *manager = [IQKeyboardManager sharedManager];
    // 控制整個功能是否啟用
    manager.enable = YES; 
    // 控制是否顯示鍵盤上的自動工具條,當需要支援內聯編輯(Inline Editing), 這就需要隱藏鍵盤上的工具條(預設開啟) 
    manager.enableAutoToolbar = NO; 
    // 啟用手勢觸控:控制點選背景是否收起鍵盤。
    manager.shouldResignOnTouchOutside = YES; 
    // 是否顯示提示文字
    manager.shouldShowTextFieldPlaceholder = YES;
    // 控制鍵盤上的工具條文字顏色是否使用者自定義,(使用TextField的tintColor屬性IQToolbar,否則色調的顏色是黑色 )
    manager.shouldToolbarUsesTextFieldTintColor = YES; 
    
    return YES;
}

複製程式碼

匯入IQKeyboardManager後,預設所有的頁面都有了這個功能,如果你在哪一個介面不想有這個效果可以在當前介面控制器的生命週期方法中進行設定:

#import "IQKeyboardReturnKeyHandler.h"
複製程式碼
@property (nonatomic, strong) IQKeyboardReturnKeyHandler  *returnKeyHandler;
複製程式碼

最後一個TextField的返回值型別UIReturnKeyDone:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];
    // 最後一個TextField的返回值型別
    self.returnKeyHandler.lastTextFieldReturnKeyType = UIReturnKeyDone;
}
複製程式碼

如果當某一個輸入框特定不需要鍵盤上的工具條:

textField.inputAccessoryView = [[UIView alloc] init];
複製程式碼

需要在某個頁面禁止自動鍵盤處理事件響應:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    //  開啟鍵盤事件響應
    [IQKeyboardManager sharedManager].enable = YES;
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    //  關閉鍵盤事件響應
    [IQKeyboardManager sharedManager].enable = NO;
}
複製程式碼
- (void)dealloc {
    self.returnKeyHandler = nil;
}
複製程式碼

另外IQKeyboardManager支援螢幕旋轉功能。

第三方庫 IQKeyboardManager使用之整理

最後要注意一點,它可以自動計算多個textField之間的先後順序,排列依據是看addSubView的先後順序。

這些目前是最常用的,夠用了,日後慢慢解鎖新用法~

相關文章