IQKeyboardManager——防止弹出的键盘遮住输入文本框

以下内容来源于官方源码、 README 文档、测试 Demo或个人使用总结 !

通常在开发应用程序时,我们会遇到一个问题,iPhone 键盘向上滑动并覆盖 UITextField / UITextViewIQKeyboardManager 允许您防止键盘向上滑动就会覆盖 UITextField / UITextView 的问题,而不需要您输入任何代码,并且不需要额外的设置。 要使用IQKeyboardManager,您只需要向项目中添加源文件。

启用/禁用管理键盘和 textField 之间的距离。

默认全局开启,只要把框架放入项目中就能自动开启,甚至不需要 #import 导入,厉害了。

/**
 Enable/disable managing distance between keyboard and textField. Default is YES(Enabled when class loads in `+(void)load` method).
 */
@property(nonatomic, assign, getter = isEnabled) BOOL enable;

使用:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 自动管理键盘和textField之间的距离(默认开启)
    [IQKeyboardManager sharedManager].enable = NO;
}

添加手势,当键盘被弹出后,点击屏幕背景收起键盘。

方法一: 如果不使用该框架实现的方式:

  1. viewDidLoad: 方法中添加以下代码:
// 添加手势,点击屏幕其他区域收起键盘的操作
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidenkeyboard)];
gesture.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:gesture];
  1. 然后添加需要实现的 hidenkeyboard 方法:
//隐藏键盘的方法
- (void)hidenkeyboard {
    // 设置所有需要用到键盘的输入文本框放弃第一响应者状态
    [self.view endEditing:YES];

    [self.account resignFirstResponder]; // 用户名输入框
    [self.password resignFirstResponder]; // 密码输入框
}

方法二: 使用框架的实现方式,一行代码解决:

[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;

隐藏键盘上的工具条

  • 全局设置
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
  • 当某个特定输入框不需要键盘上的工具条时:
textField.inputAccessoryView = [[UIView alloc] init];
  • 在键盘上方显示工具条,不显示文本输入框占位符文字
[IQKeyboardManager sharedManager].enableAutoToolbar = YES;
[IQKeyboardManager sharedManager].shouldShowTextFieldPlaceholder = NO;
  • 设置某个视图上所有的输入框不需要工具条
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    [IQKeyboardManager sharedManager].enableAutoToolbar = NO;
    [IQKeyboardManager sharedManager].shouldShowToolbarPlaceholder = NO;
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [IQKeyboardManager sharedManager].enableAutoToolbar = YES;
    [IQKeyboardManager sharedManager].shouldShowToolbarPlaceholder = YES;
}

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,200评论 4 61
  • 与朋友聊天,因专业及工作原因,闲聊中他给我讲到了“葛洲坝地产推出建筑5G科技”,说实话,我还只听过网络的什么2G、...
    冰红茶麻麻阅读 977评论 5 43
  • 有时在想,什么是偶然,什么又是注定。哪一个赋有故事延展性伏笔性的瞬间,如果来得快一点,或者慢一点,或者被咽在肚下,...
    青艾阅读 352评论 0 3
  • 这年头,不会端茶倒水的机器人都不好意思叫自己机器人了! 但要他们倒一次水还不如自己动手 到了餐桌前,还得自己端菜!...
    他们在干吗阅读 242评论 0 0