一次性处理全局键盘好用工具IQKeyboardManager

20 篇文章 0 订阅
4 篇文章 0 订阅

IQKeyboardManager使用背景

在一个完整的项目中,输入框是用到频率相当高的基础UI控件,UITextfield UITextView等经常一个页面就要多次出现,如何处理键盘弹出和回收释放是我们不可避免遇到的问题。
当输入框位于屏幕底部时,弹起的键盘很可能覆盖输入框,导致用户看不到输入结果,体验较差… IQKeyboardManager可以很简单快捷的解决键盘遮盖输入框的问题,还能解决一键解决键盘释放问题,使用非常简洁方便,再也不用单独页面处理键盘问题了。

IQKeyboardManager简单的使用方法

1.Cocoapod 导入或直接下载拖进去:

pod ‘IQKeyboardManager’
IQKeyboardManager 的 GitHub地址:IQKeyboardManager 的 GitHub 地址

2.在 AppDelegate.m 中导入头文件

#import <IQKeyboardManager/IQKeyboardManager.h>

3.在 AppDelegate 中设置全局属性

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    //设置根视图
    [self setRootVC];
    //设置键盘全局属性
    [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
    [IQKeyboardManager sharedManager].enable = YES;
    //一些基本属性
    /*
    //获取类库的单例变量
    IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager];
    //控制整个功能是否启用
    keyboardManager.enable = YES;
    //控制点击背景是否收起键盘
    keyboardManager.shouldResignOnTouchOutside = YES;
    //控制键盘上的工具条文字颜色是否用户自定义
    keyboardManager.shouldToolbarUsesTextFieldTintColor = YES;
    //有多个输入框时,可以通过点击Toolbar 上的“前一个”“后一个”按钮来实现移动到不同的输入框
    keyboardManager.toolbarManageBehaviour = IQAutoToolbarBySubviews;
    //控制是否显示键盘上的工具条
    keyboardManager.enableAutoToolbar = YES;
    //是否显示占位文字
    keyboardManager.shouldShowToolbarPlaceholder = YES;
    //设置占位文字的字体
    keyboardManager.placeholderFont = [UIFont boldSystemFontOfSize:17];
    //输入框距离键盘的距离
    keyboardManager.keyboardDistanceFromTextField = 10.0f;
    */
    
    return YES;
}

4.若某个类不需要使用 IQKeyboardManager,可以在这个类中这样设置:

 - (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [IQKeyboardManager sharedManager].enable = NO;
}
 - (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [IQKeyboardManager sharedManager].enable = YES;
}

5.具体使用效果图如下:

在这里插入图片描述
在这里插入图片描述
希望能对你有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,可以通过自定义异常处理程序来处理唯一性异常。以下是一个简单的示例,演示如何在全局处理唯一性异常: 首先,创建一个自定义异常类,例如UniqueConstraintException: ```java public class UniqueConstraintException extends RuntimeException { public UniqueConstraintException(String message) { super(message); } } ``` 然后,创建一个全局异常处理程序,例如UniqueConstraintExceptionHandler: ```java @ControllerAdvice public class UniqueConstraintExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler(value = {UniqueConstraintException.class}) protected ResponseEntity<Object> handleConflict(RuntimeException ex, WebRequest request) { String bodyOfResponse = "Duplicate entry found"; return handleExceptionInternal(ex, bodyOfResponse, new HttpHeaders(), HttpStatus.CONFLICT, request); } } ``` 在这个处理程序中,我们使用@ControllerAdvice注释来定义一个全局异常处理程序,并使用@ExceptionHandler注释来定义要处理的异常类型。在这个示例中,我们处理UniqueConstraintException类型的异常。在处理程序中,我们使用ResponseEntityExceptionHandler类来处理异常,并返回一个HTTP响应实体,其中包含错误消息和响应状态码。 最后,在应用程序中使用这个处理程序,例如: ```java @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } @Autowired private UniqueConstraintExceptionHandler uniqueConstraintExceptionHandler; @PostConstruct public void init() { Thread.setDefaultUncaughtExceptionHandler(uniqueConstraintExceptionHandler); } } ``` 在这个示例中,我们在应用程序的main方法中注入UniqueConstraintExceptionHandler,并将其设置为默认的未捕获异常处理程序。这样,在应用程序中发生UniqueConstraintException异常时,处理程序将被调用,并返回一个HTTP响应实体。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值