Disable iOS8 Quicktype Keyboard programmatically on UITextView
I'm trying to update an app for iOS8, which has a chat interface, but the new Quicktype keyboard hides the text view, so I would like to turn it off programmatically or in interface builder.
Is it possible somehow or only the users can turn it off in the device settings?
I know there is a question/answer which solves this problem with a UITextfield
, but I need to do it with a UITextView
.
Solution 1:
You may disable the keyboard suggestions / autocomplete / QuickType for a UITextView which can block the text on smaller screens like the 4S as shown in this example
with the following line:
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
And further if youd like to do this only on a specific screen such as targeting the 4S
if([[UIDevice currentDevice]userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
if (screenHeight == 568) {
// iphone 5 screen
}
else if (screenHeight < 568) {
// smaller than iphone 5 screen thus 4s
}
}
Solution 2:
For completeness sake I would like to add that you can also do this in the Interface Builder
.
To disable Keyboard Suggestions on UITextField
or UITextView
— in the Attributes Inspector
set Correction
to No
.
Solution 3:
I've created a UITextView category class with the following method:
- (void)disableQuickTypeBar:(BOOL)disable
{
self.autocorrectionType = disable ? UITextAutocorrectionTypeNo : UITextAutocorrectionTypeDefault;
if (self.isFirstResponder) {
[self resignFirstResponder];
[self becomeFirstResponder];
}
}
I wish there was a cleaner approach tho. Also, it assumes the auto-correction mode was Default
, which may not be always true for every text view.
Solution 4:
In Swift 2:
myUITextField.autocorrectionType = UITextAutocorrectionType.No
Solution 5:
In Swift 4.x:
myUTTextField.autocorrectionType = .no