天天看点

有关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];//键盘将要显示的通知

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];

setAnimationDuration:animation];

    CGRect

scrollViewFrame = [mainScroll frame];

scrollViewFrame.size.height -=

(keyboardSize.height-48);//减去tabBar的高度

content = [contentView frame];

content.size.height += (keyboardSize.height-48);

contentView.frame = content;

mainScroll.frame = scrollViewFrame;

    [mainScroll

scrollRectToVisible:editRect animated:YES];

commitAnimations];

-(void)keyBoardWillHidden:(NSNotification *)notif{

scrollViewFrame.size.height += (keyboardSize.height-48);

content.size.height -= (keyboardSize.height-48);

网络上志同道合,我们一起学习网络安全,一起进步,QQ群:694839022