Disable iOS8 Quicktype Keyboard programmatically on UITextView

后端 未结 6 722
被撕碎了的回忆
被撕碎了的回忆 2020-11-27 19:02

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

相关标签:
6条回答
  • 2020-11-27 19:22

    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.

    0 讨论(0)
  • 2020-11-27 19:27

    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 here enter 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
        }
    }
    
    0 讨论(0)
  • 2020-11-27 19:28

    As others have said, you can use:

    textView.autocorrectionType = .no
    

    but I've also noticed people struggling with actually making the autocomplete bar swap out, since if the textView is already the firstResponder when you change its autocorrectionType, it won't update the keyboard. Instead of trying to resign and reassign the firstResponder status to the textView to effect the change, you can simply call:

    textView.reloadInputViews()
    

    and that should hide the autocomplete bar. See https://developer.apple.com/documentation/uikit/uiresponder/1621110-reloadinputviews

    0 讨论(0)
  • 2020-11-27 19:31

    In Swift 4.x:

    myUTTextField.autocorrectionType = .no
    
    0 讨论(0)
  • 2020-11-27 19:32

    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

    0 讨论(0)
  • 2020-11-27 19:33

    In Swift 2:

    myUITextField.autocorrectionType = UITextAutocorrectionType.No
    
    0 讨论(0)
提交回复
热议问题