ios学习--iphone 防止键盘挡住UITextField解决方案

int prewTag ; //编辑上一个UITextField的TAG,需要在XIB文件中定义或者程序中添加,不能让两个控件的TAG相同

  float prewMoveY; //编辑的时候移动的高度

  // 下面两个方法是为了防止TextFiled让键盘挡住的方法

  /**

  开始编辑UITextField的方法

  */

  -(void) textFieldDidBeginEditing:(UITextField *)textField

  {

  CGRect textFrame = textField.frame;

  float textY = textFrame.origin.y+textFrame.size.height;

  float bottomY = self.view.frame.size.height-textY;

  if(bottomY>=216) //判断当前的高度是否已经有216,如果超过了就不需要再移动主界面的View高度

  {

  prewTag = -1;

  return;

  }

  prewTag = textField.tag;

  float moveY = 216-bottomY;

  prewMoveY = moveY;

  NSTimeInterval animationDuration = 0.30f;

  CGRect frame = self.view.frame;

  frame.origin.y -=moveY;//view的Y轴上移

  frame.size.height +=moveY; //View的高度增加

  self.view.frame = frame;

  [UIView beginAnimations:@"ResizeView" context:nil];

  [UIView setAnimationDuration:animationDuration];

  self.view.frame = frame;

  [UIView commitAnimations];//设置调整界面的动画效果

  }

  /**

  结束编辑UITextField的方法,让原来的界面还原高度

  */

  -(void) textFieldDidEndEditing:(UITextField *)textField

  {

  if(prewTag == -1) //当编辑的View不是需要移动的View

  {

  return;

  }

  float moveY ;

  NSTimeInterval animationDuration = 0.30f;

  CGRect frame = self.view.frame;

  if(prewTag == textField.tag) //当结束编辑的View的TAG是上次的就移动

  { //还原界面

  moveY = prewMoveY;

  frame.origin.y +=moveY;

  frame.size. height -=moveY;

  self.view.frame = frame;

  }

  //self.view移回原位置

  [UIView beginAnimations:@"ResizeView" context:nil];

  [UIView setAnimationDuration:animationDuration];

  self.view.frame = frame;

  [UIView commitAnimations];

  [textField resignFirstResponder];

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值