Question

I have a UITextField and a UIDatePicker in my XIB file, now I assigned the date that is chosen on the UIDatePicker to be the value of the text in my textfield. I've done this well, my only problem now is that I want the keyboard not to show when I tap on the textfield. I'm sure somebody knows the answer, I will be glad if you will share it :) Thanks!

btw. I tried this, but it didn't work..

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];
}
Was it helpful?

Solution

Just set the UIDatePicker as the inputView of your UITextField.

This wil repalce the keyboard as the input view when the user clicks on the UItextField with the UIDatePicker.

self.dateTextField.inputView = self.datePicker;

OTHER TIPS

You can set delegate in your UITextField and return NO in textFieldShouldBeginEditing.

Try this:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if (textField.tag == YOU_TEXT_FIELD_TAG) {
        return NO;
    }
    return YES;
}

Don't forget to make yourViewController conform to <UITextFieldDelegate> and also set yourTextField.delegate = self;

Since I didn't saw full answer, that I also needed, and come to solution with some answers here I'll put my code.

Simply put some "blank" UIView as input view.

Objective C

  UIView *hideKeyboardView = [[UIView alloc]init];
  self.yourTextField.inputView = hideKeyboardView;

Swift

let hideKeyboardView = UIView()
yourTextField.inputView = hideKeyboardView

I already fixed it! I added the following code on the viewDidLoad

    [self.dateField addTarget:self action:@selector(textFieldDidBeginEditing:) 
forControlEvents:UIControlEventEditingDidBegin];

and I still used

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];
}

Thanks for all your help anyway! Hope this thread will help others..

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top