Keyboard 遮挡 UITextField

方法一:通过View的中心位置来移动

-(BOOL)textFieldShouldReturn:(id)sender
{
    self.view.center=CGPointMake(160,207);   
    [sender resignFirstResponder];
    return YES;
}
- (BOOL)textFieldShouldBeginEditing:(id)sender
{
    UITextField *textField = (UITextField *)sender;
    if(textField.tag==1)
    {
        self.view.center =CGPointMake(self.view.center.x,100);
    }
    else if(textField.tag==2)
    {
        self.view.center =CGPointMake(self.view.center.x,90);
    }
    return YES;
}

  方法二:通过判断键盘的位置来设置view的frame

- (void)keyboardWillShow:(NSNotification *)noti
{        
    //键盘输入的界面调整        
    //键盘的高度
    float height = 216.0;                
    CGRect frame = self.view.frame;        
    frame.size = CGSizeMake(frame.size.width, frame.size.height - height);        
    [UIView beginAnimations:@"Curl"context:nil];//动画开始          
    [UIView setAnimationDuration:0.30];           
    [UIView setAnimationDelegate:self];          
    [self.view setFrame:frame];  
    //[self.view setFrame:CGRectMake(0, -30, frame.size.width, frame.size.height)];
    [UIView commitAnimations];         
}


- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{        
    // When the user presses return, take focus away from the text field so that the keyboard is dismissed.        
    NSTimeInterval animationDuration = 0.30f;        
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];        
    [UIView setAnimationDuration:animationDuration];        
    CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);        
    self.view.frame = rect;        
    [UIView commitAnimations];        
    [textField resignFirstResponder];
    return YES;        
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{        
    CGRect frame = textField.frame;
    int offset = frame.origin.y + 50 - (self.view.frame.size.height - 216.0);//键盘高度216
    NSTimeInterval animationDuration = 0.30f;                
    [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];                
    [UIView setAnimationDuration:animationDuration];
    float width = self.view.frame.size.width;                
    float height = self.view.frame.size.height;        
    if(offset > 0)
    {
        CGRect rect = CGRectMake(0.0f, -offset,width,height);                
        self.view.frame = rect;        
    }        
    [UIView commitAnimations];                
    
}

推荐使用第一种,方便快捷,并且好理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值