有时候搞开发会碰到一个问题,就是当点击一个UITextField时,弹出虚拟键盘会将这个文本控件遮住。这无论从开发角度还是用户体验来说,都是不行的。
其实要解决这个问题也是很简单的,只要获取键盘没弹出前键盘的Rect,键盘弹出后键盘的Rect,其实最主要的变化还是在于Y值嘛,所以只要两者相减就
能得到需要移动的距离,然后做个动画就OK了。
那具体代码如下:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//注册观察键盘的变化
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(transformView:) name:UIKeyboardWillChangeFrameNotification object:nil];
}
//键盘回收
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
for(UIView *view in self.view.subviews)
{
[view resignFirstResponder];
}
}
//移动UIView
-(void)transformView:(NSNotification *)aNSNotification
{
//获取键盘弹出前的Rect
NSValue *keyBoardBeginBounds=[[aNSNotifica