平常在開發中,用到輸入框的地方不勝其數,當輸入框位於屏幕底部時,彈起的鍵盤很可能覆蓋輸入框,導致用戶看不到輸入結果,體驗較差...... IQKeyboardManager
可以很簡單快捷的解決鍵盤遮蓋輸入框的問題,接下來就一起來學習一下吧。
-
先簡單認識下 IQKeyboardManager
GitHub 地址:GitHub 地址
-
官方示意效果圖如下:
再貼一下自己做的簡單效果圖☺️
簡單起見直接在 Main.storyboard 中拖入 7 個UITextField, 每個 UITextField 都設有占位文字。
以下是 IQKeyboardManager 的一些具體使用
1. 用 Cocoapod 導入或直接下載拖進去,這里方便起見直接用 Cocoapod 導入。
IQKeyboardManager 的 GitHub地址:IQKeyboardManager 的 GitHub 地址
2. 在 AppDelegate.m 中導入頭文件
#import <IQKeyboardManager/IQKeyboardManager.h>
3. 在 AppDelegate 中設置全局屬性
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager]; // 獲取類庫的單例變量 keyboardManager.enable = YES; // 控制整個功能是否啟用 keyboardManager.shouldResignOnTouchOutside = YES; // 控制點擊背景是否收起鍵盤 keyboardManager.shouldToolbarUsesTextFieldTintColor = YES; // 控制鍵盤上的工具條文字顏色是否用戶自定義 keyboardManager.toolbarManageBehaviour = IQAutoToolbarBySubviews; // 有多個輸入框時,可以通過點擊Toolbar 上的“前一個”“后一個”按鈕來實現移動到不同的輸入框 keyboardManager.enableAutoToolbar = YES; // 控制是否顯示鍵盤上的工具條 keyboardManager.shouldShowTextFieldPlaceholder = YES; // 是否顯示占位文字 keyboardManager.placeholderFont = [UIFont boldSystemFontOfSize:17]; // 設置占位文字的字體 keyboardManager.keyboardDistanceFromTextField = 10.0f; // 輸入框距離鍵盤的距離 return YES; }
4. 若某個類不需要使用 IQKeyboardManager,可以在這個類中這樣設置
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [IQKeyboardManager sharedManager].enable = NO; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [IQKeyboardManager sharedManager].enable = YES; }
5. 常用屬性介紹
sharedManager
:獲取類庫的單例變量enable
:項目使用不使用 IQKeyboardManager 這個類庫,當然,某些頁面可以根據需要單獨設置shouldResignOnTouchOutside
:點擊背景頁面時是否收起鍵盤shouldToolbarUsesTextFieldTintColor
:控制鍵盤上的工具條文字顏色是否用戶自定義,默認為 NOtoolbarManageBehaviour
:有多個輸入框時,可以通過點擊Toolbar 上的“前一個” “后一個”按鈕來實現移動到不同的輸入框enableAutoToolbar
:是否顯示鍵盤上的工具條shouldShowTextFieldPlaceholder
:是否顯示占位文字(如果輸入框有占位文字,那么在 Toolbar 中默認會顯示出來)placeholderFont
:占位文字的字體大小keyboardDistanceFromTextField
:輸入框距離鍵盤的距離