Disable UITextField keyboard?
I put a numeric keypad in my app for inputing numbers into a text view, but in order to input numbers I have to click on the text view. Once I do so, the regular keyboard comes up, which I don't want.
How can I disable the keyboard altogether? Any help is greatly appreciated.
Solution 1:
The UITextField's inputView property is nil by default, which means the standard keyboard gets displayed.
If you assign it a custom input view, or just a dummy view then the keyboard will not appear, but the blinking cursor will still appear:
UIView* dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
myTextField.inputView = dummyView; // Hide keyboard, but show blinking cursor
If you want to hide both the keyboard and the blinking cursor then use this approach:
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return NO; // Hide both keyboard and blinking cursor.
}
Solution 2:
For Swift 2.x, 3.x, 4.x, 5.x
textField.inputView = UIView()
does the trick
Solution 3:
If it's a UITextField, you can set it's enabled
property to NO.
If it's a UITextView, you can implement -textViewShouldBeginEditing:
in its delegate to return NO, so that it'll never start editing. Or you can subclass it and override -canBecomeFirstResponder
to return NO. Or you could take advantage of its editing behavior and put your numeric buttons into a view which you use as the text view's inputView
. This is supposed to cause the buttons to be displayed when the text view is edited. That may or may not be what you want.
Solution 4:
Depending on how you have your existing buttons working this could break them, but you could prevent the keyboard from showing up setting the textView's editable property to NO
myTextView.editable = NO