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;

enter image description hereenter image description here

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 .

enter image description here

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