Skip to main content

How To Use Hide And Show Keyboard And Set View Animations In UITextField In Objective C


KEYBOARD HIDE AND SHOW AND VIEW ANIMATIONS IN TEXT FIELD

ViewController.h

float animatedDistance;

ViewController.m

- (void)textViewDidBeginEditing:(UITextView *)textView
{
     CGRect textFieldRect=[self.view.window convertRect:textView.bounds fromView:textView];
     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 - 0.2 * viewRect.size.height;
     CGFloat denominator = (0.8 - 0.2) * viewRect.size.height;
     CGFloat heightFraction=numerator / denominator;

          if (heightFraction < 0.0)
          {
               heightFraction= 0.0;
          }
          else if (heightFraction > 1.0)
          {
               heightFraction = 1.0;
          }

     UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];

          if (orientation == UIInterfaceOrientationPortrait || orientation ==                                                                                         UIInterfaceOrientationPortraitUpsideDown)
             {
                    animatedDistance = floorf(216 * heightFraction);
             }
         else
            {
                   animatedDistance = floorf(140 * heightFraction);
            }

      CGRect viewFrame=self.view.frame;
      viewFrame.origin.y-=animatedDistance;
      [UIView beginAnimations:nil context:NULL];
      [UIView setAnimationBeginsFromCurrentState:YES];
      [UIView setAnimationDuration:0.3];
      [self.view setFrame:viewFrame];
      [UIView commitAnimations];

         // if ([textView.text isEqualToString:@"Enquiry/Request"])
             {
                  // textView.text =@"";
                  // textView.textColor = [UIColor blackColor]; //optional
         // }

           [textView becomeFirstResponder];
}

- (void)textViewDidEndEditing:(UITextView *)textView
{
      CGRect viewFrame = self.view.frame;
      viewFrame.origin.y +=animatedDistance;
      [UIView beginAnimations:nil context:NULL];
      [UIView setAnimationBeginsFromCurrentState:YES];
      [UIView setAnimationDuration:0.3];
      [self.view setFrame:viewFrame];
      [UIView commitAnimations];

         // if ([textView.text isEqualToString:@""]) 
            {
                   // textView.text =@"Enquiry/Request";
                   // textView.textColor = [UIColor darkGrayColor]; //optional
         // }

         [textView resignFirstResponder];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
        [textField resignFirstResponder];
        return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{
     CGRect viewFrame = self.view.frame;
     viewFrame.origin.y +=animatedDistance;
     [UIView beginAnimations:nil context:NULL];
     [UIView setAnimationBeginsFromCurrentState:YES];
     [UIView setAnimationDuration:0.3];
     [self.view setFrame:viewFrame];
     [UIView commitAnimations];
}

- (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 - 0.2 * viewRect.size.height;
     CGFloat denominator = (0.8 - 0.2) * viewRect.size.height;
     CGFloat heightFraction=numerator / denominator;

         if (heightFraction < 0.0)
         {
                heightFraction= 0.0;
          }
         else if (heightFraction > 1.0)
          {
               heightFraction = 1.0;
}

       UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];

       if (orientation == UIInterfaceOrientationPortrait || orientation ==                                                                                        UIInterfaceOrientationPortraitUpsideDown)
        {
                 animatedDistance = floorf(216 * heightFraction);
        }
        else
        {
                 animatedDistance = floorf(140 * heightFraction);
}

    CGRect viewFrame=self.view.frame;
    viewFrame.origin.y-=animatedDistance;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.3];
    [self.view setFrame:viewFrame];
    [UIView commitAnimations];
}


Comments

Popular Posts

What are the Alternatives of device UDID in iOS? - iOS7 / iOS 6 / iOS 5 – Get Device Unique Identifier UDID

Get Device Unique Identifier UDID Following code will help you to get the unique-device-identifier known as UDID. No matter what iOS user is using, you can get the UDID of the current iOS device by following code. - ( NSString *)UDID { NSString *uuidString = nil ; // get os version NSUInteger currentOSVersion = [[[[[UIDevice currentDevice ] systemVersion ] componentsSeparatedByString: @" . " ] objectAtIndex: 0 ] integerValue ]; if (currentOSVersion <= 5 ) { if ([[ NSUserDefaults standardUserDefaults ] valueForKey: @" udid " ]) { uuidString = [[ NSUserDefaults standardDefaults ] valueForKey: @" udid " ]; } else { CFUUIDRef uuidRef = CFUUIDCreate ( kCFAllocatorDefault ); uuidString = ( NSString *) CFBridgingRelease ( CFUUIDCreateString ( NULL ,uuidRef)); CFRelease (uuidRef); [[ NSUserDefaults standardUserDefaults ] setObject: uuidString ForKey: @" udid " ]; [[ NSUserDefaults standardUserDefaults ] synchro...

An introduction to Size Classes for Xcode 8

Introduction to Size Classes for Xcode In iOS 8, Apple introduced  size classes , a way to describe any device in any orientation. Size classes rely heavily on auto layout. Until iOS 8, you could escape auto layout. IN iOS8, Apple changed several UIKit classes to depend on size classes. Modal views, popovers, split views, and image assets directly use size classes to determine how to display an image. Identical code to present a popover on an iPad  causes a iPhone to present a modal view. Different Size Classes There are two sizes for size classes:  compact , and  regular . Sometime you’ll hear about any.  Any  is the generic size that works with anything. The default Xcode layout, is  width:any height:any . This layout is for all cases. The Horizontal and vertical dimensions are called  traits , and can be accessed in code from an instance of  UITraitCollection . The  compact  size descr...

Reloading UITableView while Animating Scroll in iOS 11

Reloading UITableView while Animating Scroll Calling  reloadData  on  UITableView  may not be the most efficient way to update your cells, but sometimes it’s easier to ensure the data you are storing is in sync with what your  UITableView  is showing. In iOS 10  reloadData  could be called at any time and it would not affect the scrolling UI of  UITableView . However, in iOS 11 calling  reloadData  while your  UITableView  is animating scrolling causes the  UITableView  to stop its scroll animation and not complete. We noticed this is only true for scroll animations triggered via one of the  UITableView  methods (such as  scrollToRow(at:at:animated:) ) and not for scroll animations caused by user interaction. This can be an issue when server responses trigger a  reloadData  call since they can happen at any moment, possibly when scroll animation is occurring. Example of s...