浅谈IQKeyboardManager第三方库的使用

IQKeyboardManager是iOS中解决键盘弹起遮挡UITextField/UITextView的一种很实用的工具。无需输入任何代码,不需要额外的设置。使用IQKeyboardManager的你只需要将源文件添加到项目。

这里附上下载链接:https://github.com/hackiftekhar/IQKeyboardManager

IQKeyboardManager支持Objective-C和swift,这里建议实用Cocoapod安装,很方便管理。

简单总结一下IQKeyboardManager最重要的功能有以下几点:

1.当键盘遮挡输入文本框的时候,自动上移View,使被遮挡的部分自动处于键盘的上方。


function1.gif

)
导入IQKeyboardManager后,默认所有的页面都有了这个功能,如果你在哪一个界面不想有这个效果可以在当前界面控制器的生命周期方法中进行设置:

#import <IQKeyboardManager.h>

- (void)viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

 [IQKeyboardManager sharedManager].enable = NO;

}

- (void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

 [IQKeyboardManager sharedManager].enable = YES;

}

或者在 AppDelegate中注册方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
  [[IQKeyboardManager sharedManager] disableInViewControllerClass:[ViewController class]];

    return YES;
}

2.在键盘上会自动添加一个工具条,工具条上有左箭头和右箭头用来切换的输入文本框,还有完成按钮用来收回键盘。


function2.gif

你也可以不使用这个自动工具条,设置的代码如下:

 [IQKeyboardManager sharedManager].enableAutoToolbar = NO;

3.可以将键盘上的return按键,变为Next/Done按键,默认最后一个UITextField/UITextView的键盘return键变为Done。顺序是按照创建控件的先后顺序,而不是从上到下的摆放顺序。


function3.gif

设置的代码如下:

#import <IQKeyboardReturnKeyHandler.h>
@implementation ViewController
{
    IQKeyboardReturnKeyHandler *returnKeyHandler;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];
}

4.设置点击背景收回键盘。

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
    
}

5.如果你的视图有导航栏,你不想上移View时,UINavigationBar消失,如function3.gif所示,你也可以进行相应设置:
如果你使用的是storyboard or xib,只需将当前视图视图控制器中的UIView class变为UIScrollView。

图片.png

如果你使用的是代码,你就需要覆盖UIViewController中的'-(void)loadView' 方法:

-(void)loadView
{
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.view = scrollView;
}

以上就是本人对IQKeyboardManager的功能简单理解,这个第三方库还有一些其他不怎么常用的功能,以后用到会继续更新。

文章有不妥当的地方,还望大神多多指点。

推荐阅读更多精彩内容