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]; }
推荐使用第一种,方便快捷,并且好理解。