How to lift up the UIView when UITextField is editing ?
I have already return about how to lift up the view when UITextView is editing. Here is the solution of UITextField.First i am going to declared some global varible for this Scope.
#pragma constant UITextField staticconstCGFloat KEYBOARD_ANIMATION_DURATION = 0.3;staticconstCGFloat MINIMUM_SCROLL_FRACTION = 0.2;staticconstCGFloat MAXIMUM_SCROLL_FRACTION = 0.6;staticconstCGFloat PORTRAIT_KEYBOARD_HEIGHT = 216;staticconstCGFloat LANDSCAPE_KEYBOARD_HEIGHT = 162;
Now we are adding some Textfield Delegate Method :
#pragma mark UITextField delegate method - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return NO;} - (void)textFieldDidBeginEditing:(UITextField *)textField { CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField]; CGRect viewRect = [self.view.window convertRect:self.view.bounds fromView:self.view]; CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height; CGFloat numerator = midline - viewRect.origin.y - MINIMUM_SCROLL_FRACTION * viewRect.size.height; CGFloat denominator = (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION) * viewRect.size.height; CGFloat heightFraction = numerator / denominator; if (heightFraction < 0.0) { heightFraction = 0.0; } else if (heightFraction > 1.0) { heightFraction = 1.0; } animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction); CGRect viewFrame = self.view.frame; viewFrame.origin.y -= animatedDistance; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION]; [self.view setFrame:viewFrame]; [UIView commitAnimations];}- (void)textFieldDidEndEditing:(UITextField *)textField{ CGRect viewFrame = self.view.frame; viewFrame.origin.y += animatedDistance; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION]; [self.view setFrame:viewFrame]; [UIView commitAnimations];}
No comments:
Post a Comment