Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 796
rihe Avatar asked Sep 20 '14 17:09

rihe


5 Answers

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
    }
}
like image 69
mihai Avatar answered Nov 02 '22 10:11

mihai


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

like image 53
Nikita Kukushkin Avatar answered Nov 02 '22 11:11

Nikita Kukushkin


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.

like image 7
DZenBot Avatar answered Nov 02 '22 10:11

DZenBot


In Swift 2:

myUITextField.autocorrectionType = UITextAutocorrectionType.No
like image 2
Nagendra Rao Avatar answered Nov 02 '22 11:11

Nagendra Rao


In Swift 4.x:

myUTTextField.autocorrectionType = .no
like image 1
yo2bh Avatar answered Nov 02 '22 11:11

yo2bh