有关UITextField、UITextView 软键盘弹出遮盖等问题的处理

。h文件中实现UITextFieldDelegate,UITextViewDelegate委托
。m文件:
如果只要简单实现编辑功能 实现UITextFieldDelegate的某些相关方法就行
#pragma mark - UITextFieldDelegate method
-(void)textFieldDidBeginEditing:(UITextField *)textField{//先于键盘通知事件执行
    editRect = textField.frame;
   
}
-(void)textFieldDidEndEditing:(UITextField *)textField{
 NSString *dd = @"dfdfd";
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return YES;
}

在- (void)viewDidLoad中注册键盘通知事件:在ios4.0和5.0中都有用 通过测试模拟器的
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil];//键盘将要显示的通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillHidden:) name:UIKeyboardWillHideNotification object:nil];//键盘将要隐藏的通知

-(void)keyBoardWillShow:(NSNotification *)notif{
    NSDictionary *info = [notif userInfo];

    NSValue *value = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
    CGSize keyboardSize = [value CGRectValue].size;
    //整个UIViewControll中加一个scrollView控件 然后再把各种控件放在其中就行
   
    NSTimeInterval animation = 0.50f;
    [UIView beginAnimations:@"animal" context:nil];
    [UIView setAnimationDuration:animation];
    CGRect scrollViewFrame = [mainScroll frame];
    scrollViewFrame.size.height -= (keyboardSize.height-48);//减去tabBar的高度
    CGRect content = [contentView frame];
    content.size.height += (keyboardSize.height-48);
    contentView.frame = content;
    mainScroll.frame = scrollViewFrame;
    [mainScroll scrollRectToVisible:editRect animated:YES];
   
    [UIView commitAnimations];
}
-(void)keyBoardWillHidden:(NSNotification *)notif{
    NSDictionary *info = [notif userInfo];
   
    NSValue *value = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
    CGSize keyboardSize = [value CGRectValue].size;
   
    NSTimeInterval animation = 0.50f;
    [UIView beginAnimations:@"animal" context:nil];
    [UIView setAnimationDuration:animation];
    CGRect scrollViewFrame = [mainScroll frame];
    scrollViewFrame.size.height += (keyboardSize.height-48);
    mainScroll.frame = scrollViewFrame;
    CGRect content = [contentView frame];
    content.size.height -= (keyboardSize.height-48);
    contentView.frame = content;
   
    [UIView commitAnimations];
}
posted @ 2012-04-09 16:44  SEC.VIP_网络安全服务  阅读(138)  评论(0编辑  收藏  举报