UITextField控件处理键盘弹出时遮住输入框的问题。

来源:互联网 发布:风险评估矩阵怎么填 编辑:程序博客网 时间:2024/06/05 13:27
实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。
只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。

- (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];        
        [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 + 32 - (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];               
}
原创粉丝点击