最近碰到TextField弹出的键盘会挡住输入框的问题, 这样对输入很有影响, 所以我在网上搜索了解决方案, 然后在这里做个总结吧 :
两种解决方案:
1. 上移TextField.frame的位置, 这个实现原理就是 当进入编辑状态时, 获取TextField的偏移位置, 然后相应上移相应距离, 待结束编辑后移到原来位置,
具体实现可以参考http://blog.youkuaiyun.com/wmqi10/article/details/8297316;
2. 用一个开源的控件EMKeyboardBarTextField,
实现功能:就是把你要操作的TextField直接移动到紧挨着弹出键盘上方的Toolbar上, 但是我的理解是不能直接add到Toolbar上的, 他是通过UIView来定位覆盖上的, 因为我试过直接加是不能成功的;
实现原理:主要是监听系统UIKeyboardWillShowNotification和UIKeyboardWillHideNotification两个通知来控制对控件的移动和移除, 具体可以研究下代码;
PS: 此控件在中文输入的时候会出现问题, 如果大家是有中文输入情况的建议使用方案一, 第二种方案在英文和数字等可以用;
还有一点:使用第二种方案时, 如果键盘弹出后, 直接跳转到另一个page这时候键盘是不会消失的, 你必须在当前页面的ViewWillDisappear方法中postNotification键盘隐藏的通知, 并让textField失去焦点;
控件开源地址: https://github.com/erwinmaza/EMKeyboardBarTextField
希望能帮助到大家, 如果有不对的地方望大家指正一起探讨.