我正在尝试为iOS8更新一个具有聊天界面的应用程序,但是新的Quicktype键盘隐藏了文本视图,因此我想以编程方式或在界面生成器中将其关闭。
是否可以通过某种方式或仅用户可以在设备设置中将其关闭?
我知道有一个问题/答案可以用来解决此问题UITextfield,但是我需要用来解决UITextView。
我正在尝试为iOS8更新一个具有聊天界面的应用程序,但是新的Quicktype键盘隐藏了文本视图,因此我想以编程方式或在界面生成器中将其关闭。
是否可以通过某种方式或仅用户可以在设备设置中将其关闭?
我知道有一个问题/答案可以用来解决此问题UITextfield,但是我需要用来解决UITextView。
Answers:
您可以为UITextView禁用键盘建议/ autocomplete / QuickType,这会阻止在较小的屏幕(例如4S)上显示文本,如本示例所示
与以下行:
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
 
此外,如果您只想在特定屏幕上执行此操作,例如定位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
    }
}
    Responder该实现的任何子类,可以实现UIKeyInput该变量的getter方法,UITextAutocorrectionTypeNo以在不使用时返回以实现相同的效果UITextField。
                    为了完整起见,我想补充一点,您也可以在中执行此操作Interface Builder。
要在UITextField或上禁用键盘建议UITextView,请Attributes Inspector设置Correction为No。

autocorrectionType为UITextAutocorrectionTypeNo。您在代码中所做的同样的事情。您能否仔细检查一下,如果行为没有改变,请告诉我您使用的是Xcode和iOS的哪个版本?
                    我用以下方法创建了一个UITextView类别类:
- (void)disableQuickTypeBar:(BOOL)disable
{
    self.autocorrectionType = disable ? UITextAutocorrectionTypeNo : UITextAutocorrectionTypeDefault;
    if (self.isFirstResponder) {
        [self resignFirstResponder];
        [self becomeFirstResponder];
    }
}
我希望有一个更清洁的方法。此外,它还假定自动更正模式为Default,对于每个文本视图而言,可能并非总是如此。
正如其他人所说,您可以使用:
textView.autocorrectionType = .no
但我也注意到人们在努力使自动完成栏换掉而苦苦挣扎,因为如果在更改其autocorrectionType时textView已经是firstResponder,它将不会更新键盘。无需尝试将firstResponder状态重新分配并重新分配给textView来实现更改,您只需调用:
textView.reloadInputViews()
那应该隐藏自动完成栏。参见https://developer.apple.com/documentation/uikit/uiresponder/1621110-reloadinputviews