首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

键盘遮盖TextField的解决办法

2012-07-01 
键盘遮盖TextField的解决方法首先添加UITextFieldDelegate,然后textFiled.delegate self下面就是实现UI

键盘遮盖TextField的解决方法
首先添加UITextFieldDelegate,然后textFiled.delegate = self;下面就是实现UITextFieldDelegate的两个方法了,如下:

//编辑前调整- (void)textFieldDidBeginEditing:(UITextField *)textField{    CGRect r = [textField convertRect:textField.frame toView:appDelegate.window];//将textField坐标系转换成整个屏幕的坐标系    CGFloat y = 0.0;    CGFloat y1 = 0.0;    //横竖屏四种情况,算出textField在屏幕坐标系中的高度y,算出屏幕高度与键盘高度差y1    if (appDelegate.interfaceOrientation == UIInterfaceOrientationPortrait) {     y = CGRectGetMaxY(r);     y1 = SCREEN_HEIGHT - KEYBOARD_HEIGHT;    } else if (appDelegate.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {     y = SCREEN_HEIGHT - r.origin.y;     y1 = SCREEN_HEIGHT - KEYBOARD_HEIGHT;    } else if (appDelegate.interfaceOrientation == UIDeviceOrientationLandscapeRight) {     y = r.origin.x + r.size.width ;     y1 = SCREEN_WIDTH - KEYBOARD_HEIGHTForHorizontal;    }else {     y = SCREEN_WIDTH - r.origin.x;      y1 = SCREEN_WIDTH - KEYBOARD_HEIGHTForHorizontal;    }//当键盘能遮盖时做处理    if (y > y1) {float offsetY  = y - y1;[UIView beginAnimations:nil context:NULL];[UIView setAnimationDuration:0.2];    r = view.frame;    //view为textField所在需要调整的view    preFrame = r;      //记录大小以便调整回来     [UIView beginAnimations:nil context:NULL];[UIView setAnimationDuration:0.2];            r.origin.y = r.origin.y - offsetY;    view.frame = r;   //调整view的y值[UIView commitAnimations];    viewHasMove = YES;  //记录是否调整    }}//编辑后恢复- (void)textFieldDidEndEditing:(UITextField *)textField{    if (viewHasMove) {   //已调整        [UIView beginAnimations:nil context:NULL];        [UIView setAnimationDuration:0.2];        view.frame = preFrame;   //        [UIView commitAnimations];        viewHasMove = NO;    }    }

热点排行