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地址

你可能感兴趣的:(IQKeyBoardManager 导航栏不隐藏正确处理方法)