Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to dismiss keyboard when user tap other area outside textfield?

today I tried to run my code on my iPod (iOS 6.1.3) and I found something interesting here...

first, when I tap on textfield the keyboard shows up but it won't hide when I tap somewhere else outside textfield.

so I decided to Googling and found this solution :

_fieldEmail.delegate = self; _fieldEmail.returnKeyType = UIReturnKeyDone;  _fieldPassword.delegate = self; _fieldPassword.returnKeyType = UIReturnKeyDone;  _fieldRegisterName.delegate = self; _fieldRegisterName.returnKeyType = UIReturnKeyDone;  _fieldRegisterEmail.delegate = self; _fieldRegisterEmail.returnKeyType = UIReturnKeyDone;  _fieldRegisterPassword.delegate = self; _fieldRegisterPassword.returnKeyType = UIReturnKeyDone; 

it works... it gives a 'DONE' button on the bottom of keyboard and now the keyboard can be hidden by pressing it.

but I have 2 problems here :

  1. the keyboard only hide when 'DONE' button is tapped. not by tapping other area outside text field. I don't know if this normal on iOS world, but usually I see lot of apps don't act like this.
  2. is there any way to loop this process so I don't have manually add that delegate one by one of all textfield that I have? how to do that?

that's all I need to know

like image 627
Saint Robson Avatar asked Sep 12 '13 05:09

Saint Robson


People also ask

How do I dismiss the keyboard for a textField?

If you're supporting only iOS 15 and later, you can activate and dismiss the keyboard for a text field by focusing and unfocusing it. In its simplest form, this is done using the @FocusState property wrapper and the focusable() modifier – the first stores a Boolean that tracks whether the second is currently focused.

How do you dismiss a keyboard?

Android devices have a solution; press the physical back button (provided on some mobile phones) or the soft key back button, and it closes the keyboard.

How do you dismiss a keyboard in tap Swift?

Via Tap Gesture This is the quickest way to implement keyboard dismissal. Just set a Tap gesture on the main View and hook that gesture with a function which calls view. endEditing . Causes the view (or one of its embedded text fields) to resign the first responder status.


Video Answer


2 Answers

The below code will work on all the components in the UIView for all the UITextField

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {     for (UIView * txt in self.view.subviews){         if ([txt isKindOfClass:[UITextField class]] && [txt isFirstResponder]) {             [txt resignFirstResponder];         }     } } 

OR

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {     [self.view endEditing:YES];     } 
like image 188
icodebuster Avatar answered Sep 20 '22 15:09

icodebuster


  1. Simply add an UITapGestureRecogniser to your view that will lead to calling resignFirstResponder

In viewDidLoad :

UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc]                                     initWithTarget:self                                    action:@selector(hideKeyBoard)];  [self.view addGestureRecognizer:tapGesture]; 

And then :

-(void)hideKeyBoard {        [yourTextField resignFirstResponder]; } 

2.You could subclass UITextField but unless you have 1000 textFields it is ok to do like you currently do.

like image 39
LudoZik Avatar answered Sep 16 '22 15:09

LudoZik