IPhone: positioning multiple UITextFields when displaying a keyboard and changing orientation

I have a view that contains 10 UITextFields created programmatically. I want the following behavior:

  • When I click on a specific UITextField, the keyboard should hide all text fields that are visually under the selected text field.
  • If I have a text field that you selected and change the orientation of the device, the text field and keyboard should rotate to the desired orientation without the text field losing its focus.
  • I need to control if the return key is active on the keyboard.

How to manage these text fields to get these actions.

+3
source share
1

scrollview . . .

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
// Begin animations to move TextFields into view.

if (textField.tag == 1) {

    [UIView beginAnimations: @"moveField" context: nil];
    [UIView setAnimationDelegate: self];
    [UIView setAnimationDuration: 0.5];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    self.scrlview.frame = CGRectMake(0,30,320,357);
    [UIView commitAnimations];
    textfield2.hidden=YES;
    textfield3.hidden=YES;
    textfield4.hidden=YES;



}     

else if(textField.tag == 2)
{

    [UIView beginAnimations: @"moveField" context: nil];
    [UIView setAnimationDelegate: self];
    [UIView setAnimationDuration: 0.5];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    self.scrlview.frame = CGRectMake(0,30,320,357);
    [UIView commitAnimations];
    textfield1.hidden=YES;
    textfield3.hidden=YES;
    textfield4.hidden=YES;


}

else if(textField.tag == 3)
{

    [UIView beginAnimations: @"moveField" context: nil];
    [UIView setAnimationDelegate: self];
    [UIView setAnimationDuration: 0.5];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    self.scrlview.frame = CGRectMake(0,25,320,357);
    [UIView commitAnimations];
    textfield1.hidden=YES;
    textfield2.hidden=YES;
    textfield4.hidden=YES;


}

else if(textField.tag == 4)
{

    [UIView beginAnimations: @"moveField" context: nil];
    [UIView setAnimationDelegate: self];
    [UIView setAnimationDuration: 0.5];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    self.scrlview.frame = CGRectMake(0,20,320,357);
    [UIView commitAnimations];
    textfield1.hidden=YES;
    textfield2.hidden=YES;
    textfield3.hidden=YES;


}  


return YES;

}

//Set the objects on the view when device orientation will change.
 -(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {

if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation ==UIInterfaceOrientationLandscapeRight) {

    // set the views oreintation here for landscapemode.        
}
if(interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ||
   interfaceOrientation == UIInterfaceOrientationPortrait) {


    //set the views oreintation here for Portraitmode.
}

}

//

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  {
// Return YES for supported orientations
return YES;

}

0

Source: https://habr.com/ru/post/1739130/


All Articles