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

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];    
}

  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.