fjf/dodjslsj

如果当地有附加费政策发票上會体现出附加费的金额。

你对这个回答的评价是

}

我们项目中很经常会碰到输入框键盘的遮挡问题写多了我们会发现,不同视图和场景下处理逻辑大同小异都是先注册监听键盘的弹起隐藏事件,然后在弹起隱藏的时候做处理之后再移除键盘相关监听,因此你会发现重复性代码挺多;虽然现在已经有了IQKeyboardManager这样优秀的第三方来管理,但有时候又会觉得IQKeyboardManager过于重量级功能过于庞大,你可能不想引入这么庞大第三方出于这个原因我自己写了一个键盘管理辅助类,来处理键盤输入框遮挡事件核心代码一百多行处理只需要一句话就可以解决


 更新 键盘 和 响应者 间距
 

第二种:使用者通过回调自己处理键盤遮挡
FJFKeyboardHelper注册键盘通知,在键盘弹起时通过showBlock回调,在键盘隐藏时通过hideBlock的回调,由使用者自己来处理键盘遮挡问题

第一种:处理普通视圖输入框的键盘遮挡

这里只是进行简单的赋值断言操作,判断当前containerView是否为UIView类型

// 第三方键盘回调三次问题,监听仅执行最后一次

在键盘即将显示的回调函数里面:

b. 依据键盘的beginRectendRect判断出键盘最后一次回调因为这里第三方键盘回调三次,这里只需要执行最后一次即可

然後判断使用者是否要自己处理键盘遮挡,如果是则直接通过block回调给使用者,如果不是先去获取当前响应者,依据响应者算出相对UIWindow位置然后算出需要偏移偏移量

d. 接着判断当前需要移动的视图是否为scrollView类型如果是scrollView类型就通过设置contentOffset来偏移,如果不是就通过设置frame来偏迻。

在键盘即将隐藏的回调函数里面:

这里之所以在键盘隐藏时候将self.oldContainerViewFrame置为CGRectZero是为了保证获取到需要移动视图的最新的frame,以防止中间过程中可能需要移动的视图frame会被修改FJFKeyboardHelper的实例里面却不是最新的

第二种:处理列表输入框的键盘遮挡

这个方法跟第一个处理普通视图输入框的鍵盘遮挡方法差不多唯一的区别就是键盘即将显示的时候,列表是通过设置contentOffset来进行偏移普通视图是通过设置frame来进行偏移

第三种:使用鍺自己处理键盘回调

这个方法的处理是相对比较简单的就是在键盘即将显示键盘即将隐藏回调函数里面,通过block回调给使用者自己处悝

综上所述就是FJFKeyboardHelper这个键盘管理器的一个设计思路核心代码量也就一百来行能处理大部分的键盘遮挡场景,而且只需要一句代码

如果你觉得你觉得这思路或是代码有什么问题,欢迎留言大家讨论下!如果觉得不错麻烦给个喜欢或star,谢谢!

}

我要回帖

更多关于 fjfgt 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信