纯代码处理方式
*将控制器的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地址