IQKeyBoardManager 導航欄不隱藏正確處理方法

純代碼處理方式

*將控制器的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地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容