第三方库 IQKeyboardManager使用之整理

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

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

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


由于这个库是一个单例,它一旦生效,全项目任何界面都有效。
控制自动键盘处理事件在整个项目内是否启用生效, 则需在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支持屏幕旋转功能。

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,885评论 4 61
  • 写作原因:看三方库源码总不知道该看什么或者能学到什么,写文章无疑是最好的药;并且我在简书上搜了一下相关文章都不是很...
    Thebloodelves阅读 12,591评论 32 59
  • 813 地雷复 六爻动 【上六:复变颐】凶险 【上六:迷复,凶,有灾眚。用行师,终有大败。以其国,君凶,至于十年,...
    智囊团阅读 388评论 0 0
  • 又到了我最不擅长的写文字时段,今天来给大家介绍希腊的一个岛屿和一个从事天然海绵事业长达200年历史的家族。 卡林诺...
    AJessica绿野芳踪阅读 1,467评论 0 1
  • 今天当了一回考官,参与招考20名社会工作者。下午整整4个小时的时间,聆听了40多名考生的面试回答。因为涉及到考生...
    花香两岸阅读 222评论 0 0

友情链接更多精彩内容