第三方库 IQKeyboardManager使用之整理

IQKeyboardManager是iOS中解决键盘弹起遮挡UITextField/UITextView的一种很实用的工具。
之前我一直是添加手势去 收起键盘 或者 令视图退出编辑状态, 现在使用这个则无需输入任何代码,不需要额外的设置。

这个库默认支持UITextField、UITextView、UIWebView、UIScrollView、UITableView、UICollectionView.

使用IQKeyboardManager, 只需要将源文件添加到项目。


第三方库 IQKeyboardManager使用之整理_第1张图片

由于这个库是一个单例,它一旦生效,全项目任何界面都有效。
控制自动键盘处理事件在整个项目内是否启用生效, 则需在AppDelegate里设置.

#import "IQKeyboardManager.h"

iOS delegate内应用入口:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 关闭设置为NO, 默认值为NO.
    [IQKeyboardManager sharedManager].enable = YES;
}

其他相关应用如下展示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 使用智能键盘
    IQKeyboardManager *manager = [IQKeyboardManager sharedManager];
    // 控制整个功能是否启用
    manager.enable = YES; 
    // 控制是否显示键盘上的自动工具条,当需要支持内联编辑(Inline Editing), 这就需要隐藏键盘上的工具条(默认打开) 
    manager.enableAutoToolbar = NO; 
    // 启用手势触摸:控制点击背景是否收起键盘。
    manager.shouldResignOnTouchOutside = YES; 
    // 是否显示提示文字
    manager.shouldShowTextFieldPlaceholder = YES;
    // 控制键盘上的工具条文字颜色是否用户自定义,(使用TextField的tintColor属性IQToolbar,否则色调的颜色是黑色 )
    manager.shouldToolbarUsesTextFieldTintColor = YES; 
    
    return YES;
}

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

#import "IQKeyboardReturnKeyHandler.h"
@property (nonatomic, strong) IQKeyboardReturnKeyHandler  *returnKeyHandler;

最后一个TextField的返回值类型UIReturnKeyDone:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];
    // 最后一个TextField的返回值类型
    self.returnKeyHandler.lastTextFieldReturnKeyType = UIReturnKeyDone;
}

如果当某一个输入框特定不需要键盘上的工具条:

textField.inputAccessoryView = [[UIView alloc] init];

需要在某个页面禁止自动键盘处理事件响应:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    //  打开键盘事件响应
    [IQKeyboardManager sharedManager].enable = YES;
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    //  关闭键盘事件响应
    [IQKeyboardManager sharedManager].enable = NO;
}
- (void)dealloc {
    self.returnKeyHandler = nil;
}

另外IQKeyboardManager支持屏幕旋转功能。

第三方库 IQKeyboardManager使用之整理_第2张图片

最后要注意一点,它可以自动计算多个textField之间的先后顺序,排列依据是看addSubView的先后顺序。

这些目前是最常用的,够用了,日后慢慢解锁新用法~

你可能感兴趣的:(第三方库 IQKeyboardManager使用之整理)