純代碼處理方式
*將控制器的View修改成ScrollView后,對于ScrollView而言,能否進行滾動,對于IQKeyBoardManager有一個很重要的因素是ScrollView的contentSize,如果這個不進行設置的話,IQKeyBoardManager貌似有問題.
根據我的觀察,在iPhone 5S 及iPhone 6 上,這個contentSize的高度要 >= 鍵盤的高度,但是鍵盤類型在一個頁面可能有多個(純數字鍵盤,字母鍵盤),所以這個值要給一個大一點值.
個人認為這可能是IQKeyBoardManager的一個bug,如果不設置ContentSize或者ContentSize的高度小于鍵盤高度,會出現底部部分輸入框被遮擋了(輸入框距離底部的距離小于ContentSize的高度的都會被遮擋),但是如果你先選擇一個上面一點的,然后通過下選鍵切換鍵盤下移,卻是好好的.
//重寫控制器的 loadView方法
#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
#define UISCREENBOUNDS [[UIScreen mainScreen] bounds]
- (void)loadView
{
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:UISCREENBOUNDS];
//contentSize是一定要設置的,不加上這一句會出現ScrollView不滾動情況,即遮擋輸入框
scrollView.contentSize = CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT);
//這里建議將contentSize 的高度要大一些,具體的值,由于各種鍵盤類型不同,高度也有可能不一樣,建議為SCREEN_HEIGHT - 64
//這樣ScrollView在不輸入時,也不會滑動,影響整體效果
self.view = scrollView;
}
Xib 或者Storyboard處理方式
在這之前要了解,UIScrollView通過xib或者Storyboard進行創建時,會有一個問題,沒有地方給你設置contentSize,UIScrollView的contentSize需要借助其他控件來進行設置
處理思路: 借助其他控件來完成ScrollView的contentSize設置
詳細的處理效果,查看demo地址