iOS开发之处理键盘问题神器IQKeyboardManager

键盘问题可能是每个项目中都可能遇到的问题,如果输入框位于屏幕的底部,弹起的键盘很可能挡住输入框,导致用户就看不到输入结果(吐槽一下网易将军令->游戏助手->游戏精灵)就是这样,问个问题自己都不知道输入的是啥,不知道输入的对不对,体验较差。以前遇到这种问题的时候一直纠结怎么处理,设置来设置去的,很是麻烦,自己也搞晕了,后来在地铁上无事看一个微信公众号推送技术文章的时候,发现了这个库,IQKeyboardManager。它是iOS中解决键盘弹起遮挡UITextField或者UITextView的一种很犀利的工具,就像文章说的那样,零行代码解决键盘问题。一试之下果然好用,于是一股脑将自己的项目都添加上了。
swift 也是支持的,我这里还是用的OC。

IQKeyboardManager的github地址

安装的时候只需要pod 一下就可以

pod 'IQKeyboardManager'

使用(几个用到的方法)

  • 在appdelegate的 didFinishLaunchingWithOptions方法中设置全局是否开启;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //键盘
    [IQKeyboardManager sharedManager].enable = YES; //默认值为NO.
    [IQKeyboardManager sharedManager].enableAutoToolbar = NO;//不显示工具条
    [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;//点空白处收回
}
  • 如果在哪里不想用这个的话,只需要在viewWillAppear方法里面设置NO,在viewWillDisAppear中设置回YES 即可;
- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
   [IQKeyboardManager sharedManager].enable = NO;
}
//注意,这个一定要设,不然会出奇葩的问题,有些地方也不可用,也就是出个这个view要重新设置回去
- (void)viewWillDisappear:(BOOL)animated{
  [super viewWillDisappear:animated]; 
  [IQKeyboardManager sharedManager].enable = YES;
}

  • 点击旁边的空白处收起键盘;这里是控制单个页面,上面的是全局的
- (void)viewDidLoad {
    [super viewDidLoad];

    [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
}
  • 如果使用的是storybord或者Xib的话,class改成UIScrollVeiw即可(被坑过);


    iOS开发之处理键盘问题神器IQKeyboardManager_第1张图片
    2016091459356QQ20160914-0.png

常用的属性

  • 输入框到键盘的距离,默认是10px。修改的话,等号后面的值自己定,但是10感觉最合适了, 根据个人习惯吧。。。
[IQKeyboardManager sharedManager].keyboardDistanceFromTextField = 0.0f;
  • 防止上滑过渡,离得太远;
[IQKeyboardManager sharedManager].preventShowingBottomBlankSpace = NO;

当然这个框架还有很多用得到的 地方,不过目前就用了这一点点,先记录下来,以后用到再补充。

你可能感兴趣的:(iOS开发之处理键盘问题神器IQKeyboardManager)