0%

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

  • GitHub 源码:IQKeyboardManager
  • star:8000+
                            ⭐️⭐️⭐️ 

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

IQKeyboardManager

官方描述:通常在开发应用程序时,我们遇到了一个问题,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];
  2. 然后添加需要实现的 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] setEnableAutoToolbar:NO];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[IQKeyboardManager sharedManager] setEnableAutoToolbar:YES];
}

参考

  • iOS 开发第三方库一 IQKeyboardManager @豆志昂扬
  • Properties and functions usage

欢迎关注我的其它发布渠道