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