1 利用UIScrollview 的設定使得整體上移
把控制項都放在scrollview上面,然後利用當使用者點擊的時候,設定scrollview 的CGPointMake(scroll.contentOffset.x, y+100)就可以達到效-(void)textFieldDidB
-(void)textFieldDidBeginEditing:(UITextField *)textField{ UIScrollView *scroll=(UIScrollView *)self.superview; float y = 200; [scroll setContentOffset:CGPointMake(scroll.contentOffset.x, y+100) animated:YES]; }- (void)textFieldDidEndEditing:(UITextField *)textField { UIScrollView *scroll = (UIScrollView *)self.superview; [scroll setContentOffset:CGPointMake(scroll.contentOffset.x, 0) animated:YES]; return;}
記得這些都是放在scrollview上的控制項,
2 第二中的方法是利用就是把父類的view整體上移,
#pragma mark textKeyBoardHeight method//先響應Textfiled方法,因為有多個控制項,所以利用tag區分-(void)textFieldDidBeginEditing:(UITextField *)textField{ [self slideFrameUp:nil withTag:textField.tag];}-(void)textFieldDidEndEditing:(UITextField *)textField{ [self slideFrameDown:nil withTag:textField.tag];}//設定上移還是下降-(void) slideFrameUp:(id)up withTag:(NSInteger)tag{ [self slideFrame:YES withTag:tag];}-(void) slideFrameDown:(id)down withTag:(NSInteger)tag{ [self slideFrame:NO withTag:tag];}-(void) slideFrame:(BOOL) up withTag:(NSInteger)tag{//設定上移的多少 int movementDistance=1; if (tag==3) { movementDistance =70; }else if (tag==4){ movementDistance = 100; // tweak as needed }//判斷是上移還是下降 const float movementDuration = 0.3f; // tweak as needed int movement = (up ? -movementDistance : movementDistance); //動畫設定 [UIView beginAnimations: @"anim" context: nil]; [UIView setAnimationBeginsFromCurrentState: YES]; [UIView setAnimationDuration: movementDuration]; self.frame = CGRectOffset(self.frame, 0, movement); [UIView commitAnimations];}
上面就是簡單的不被鍵盤遮擋的方法,