简介 : TPKeyboardAvoiding是一个第三方键盘管理工具,作用是避免键盘遮挡视图。
框架结构 
其中一共有3个类,1个分类。
框架使用
只需要将用到tableView的地方替换成TPKeyboardAvoidingTableView,同理适用于TPKeyboardAvoidingCollectionView,TPKeyboardAvoidingScrollView。其中整个核心都是利用UIScrollView (TPKeyboardAvoidingAdditions)来实现的。
源码解析
由于整个核心实现都是在以下代码中实现的,所以主要针对以下两个方法进行讲解。
1 | - (void)TPKeyboardAvoiding_keyboardWillShow:(NSNotification*)notification; |
1 | - (void)TPKeyboardAvoiding_keyboardWillShow:(NSNotification*)notification { |
该方法主要分为以下几个步骤:
1、拿到键盘将要出现的状态;
2、保存当前ScrollView的状态;
3、计算当前ScrollView滚动范围;
4、调整ScrollView的contentInset;
5、调整ScrollView的ContentOffset。
1 | - (void)TPKeyboardAvoiding_keyboardWillHide:(NSNotification*)notification { |
该方法主要负责ScrollView状态的恢复。
至此,该框架的核心方法已经总结完毕。
小结
TPKeyboardAvoiding主要调整contentInset和contentOffset来解决键盘的遮挡问题。以后如果需要自己设计一个解决键盘遮挡问题的框架,便可以参考此思路。