Shaun Wright
Shaun Wright

Reputation: 115

Hide keyboard when selecting another UITextField w/ UIPickerView error

I'm trying to hide the keyboard when the user selects a UITextField. I currently have three text fields: two UIPickerView (controlled by the same picker) and a textinput field. When I click "return" or on the background, the keyboard disappears via a resignFirstResponder call.

PROBLEM:

When I am currently editing the text input field and then immediately select the UITextField w/ UIPickerView functionality, the keyboard doesn't disappear. I feel like i've tried every solution and am beating by head against a wall...

CODE:

-(void)textFieldDidBeginEditing:(UITextField *)textField{
    [pickerView setHidden:YES];
    if (fldQuiver.editing == YES) {
        [fldTitle resignFirstResponder];
        [fldQuiver resignFirstResponder];
        [pickerView setHidden:NO];
        variabla = 1;
    }else if (fldCategory.editing == YES) {
        [fldTitle resignFirstResponder];
        [fldCategory resignFirstResponder];
        [pickerView setHidden:NO];
        variabla = 2;
    }
    NSLog(@"variabla %d",variabla);
    [pickerView reloadAllComponents];
}

Any help would be appreciated. Thanks in advance.

EDITED CODE FOR PRINCE:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.
{
    //set logic for picker view here
    if (textField == fldQuiver)
    {
        variabla = 1;
    }
    else if (textField == fldCategory) {
        variabla = 2;
    }
    else
    {
    }
    NSLog(@"variabla %d",variabla);
    [pickerView reloadAllComponents];

    if (textField == fldQuiver)
    {
        [fldTitle resignFirstResponder];
        [pickerView setHidden:NO];
        return NO;
    }
    else if (textField == fldCategory) {
        [fldTitle resignFirstResponder];
        [pickerView setHidden:NO];
        return NO;
    }
    else
    {
        [pickerView setHidden:YES];
        return YES;
    }
}

ALSO: I have "synthesized" and declared @property fldQuiver and fldCategory. I have IBOutlet for fldTitle, fldQuiver, fldCategory.

The pickerView is loaded with an array based on variable.

Upvotes: 0

Views: 1495

Answers (2)

Paresh Navadiya
Paresh Navadiya

Reputation: 38239

Use textFieldShouldBeginEditing delegate method for this:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.
{
   //set logic for picker view here 
   if (textField == fldQuiver) 
   {
      //picker view hidden or show here
      return NO;
   }
   else if (textField == fldCategory) {
       //picker view hidden or show here
      return NO;
   }
   else
   {
      return YES;
   }

}

Upvotes: 2

NANNAV
NANNAV

Reputation: 4901

set delegate for text field

textField.delegate=self;

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
...........
[textField resignFirstResponder];  //it common for all text field,so not use multi resignFirstResponder
............
}

Upvotes: 0

Related Questions