键盘遮盖TextField的解决方法

[size=medium]首先添加UITextFieldDelegate,然后textFiled.delegate = self;下面就是实现UITextFieldDelegate的两个方法了,如下:[/size]

//编辑前调整
- (void)textFieldDidBeginEditing:(UITextField *)textField{
CGRect r = [textField convertRect:textField.frame toView:appDelegate.window];//将textField坐标系转换成整个屏幕的坐标系
CGFloat y = 0.0;
CGFloat y1 = 0.0;

//横竖屏四种情况,算出textField在屏幕坐标系中的高度y,算出屏幕高度与键盘高度差y1
if (appDelegate.interfaceOrientation == UIInterfaceOrientationPortrait) {
y = CGRectGetMaxY(r);
y1 = SCREEN_HEIGHT - KEYBOARD_HEIGHT;
} else if (appDelegate.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
y = SCREEN_HEIGHT - r.origin.y;
y1 = SCREEN_HEIGHT - KEYBOARD_HEIGHT;
} else if (appDelegate.interfaceOrientation == UIDeviceOrientationLandscapeRight) {
y = r.origin.x + r.size.width ;
y1 = SCREEN_WIDTH - KEYBOARD_HEIGHTForHorizontal;
}else {
y = SCREEN_WIDTH - r.origin.x;
y1 = SCREEN_WIDTH - KEYBOARD_HEIGHTForHorizontal;
}

//当键盘能遮盖时做处理
if (y > y1) {
float offsetY = y - y1;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
r = view.frame; //view为textField所在需要调整的view
preFrame = r; //记录大小以便调整回来

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];

r.origin.y = r.origin.y - offsetY;
view.frame = r; //调整view的y值
[UIView commitAnimations];
viewHasMove = YES; //记录是否调整
}
}

//编辑后恢复
- (void)textFieldDidEndEditing:(UITextField *)textField{
if (viewHasMove) { //已调整
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
view.frame = preFrame; //
[UIView commitAnimations];
viewHasMove = NO;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值