iphone - UIPicker and Keyboard conflict -
what have 3 textfields , whenever touch textfield1 or textfield2 picker changes values , there no keyboard. when touch textfield3 keyboard appears , picker goes hidden.now if dismiss keyboard clicking return , click textfield1 picker appears again, if dont dismiss keyboard clicking button stays on picker. need when keyboard firstresponder (and see on screen) hide if click on textfield1 , see picker
int variabla; -(void)textfielddidbeginediting:(uitextfield *)textfield{ [pickerview sethidden:yes]; if (textfield1.editing == yes) { [textfield1 resignfirstresponder]; [pickerview sethidden:no]; variabla = 1; }else if (textfield2.editing == yes) { [textfield2 resignfirstresponder]; [pickerview sethidden:no]; variabla = 2; } nslog(@"variabla %d",variabla); [pickerview reloadallcomponents]; } - (nsinteger)numberofcomponentsinpickerview:(uipickerview *)pickerview; { return 1; } - (nsinteger)pickerview:(uipickerview *)pickerview numberofrowsincomponent:(nsinteger)component; { if (variabla == 1) { return [pickerarray1 count]; }else if (variabla == 2) { return [pickerarray2 count]; }else { return 0; } } - (nsstring *)pickerview:(uipickerview *)pickerview titleforrow:(nsinteger)row forcomponent:(nsinteger)component; { if (variabla == 1) { return [pickerarray1 objectatindex:row]; }else if (variabla == 2) { return [pickerarray2 objectatindex:row]; }else { return 0; } } - (void)textfieldshouldreturn:(uitextfield *)textfield{ [textfield resignfirstresponder]; } - (void)viewdidload { [super viewdidload]; [pickerview sethidden:yes]; pickerarray1 = [[nsmutablearray alloc] initwithobjects:@"0", @"1", @"2", nil]; pickerarray2 = [[nsmutablearray alloc] initwithobjects:@"3", @"4", @"5", nil]; }
ok solve problem can use lot of option tell 1 of them.
- (void)textfieldshouldbeginediting:(uitextfield *)textfield { if([textfield isequal:yourtextfield3]) { yourpicker.hidden=yes; } else { [yourtextfield3 resignfirstresponder]; [self performselector:@selector(textfieldfirstresponderondelay) withobject:nil afterdelay:0.3]; } } - (void)textfieldfirstresponderondelay { yourpicker.hidden=no; } and whatever want can put in these conditions.
or can add tag textfield , check accordingly.hide picker whenever want or display picker , hide keyboard whenever want.
Comments
Post a Comment