在UITextView上以编程方式禁用iOS8 Quicktype键盘

时间:2014-09-20 17:09:32

标签: ios objective-c xcode ios8

我正在尝试更新iOS8的应用程序,该应用程序具有聊天界面,但新的Quicktype键盘隐藏了文本视图,所以我想以编程方式或在界面构建器中关闭它。

是否有可能或者只有用户可以在设备设置中将其关闭?

我知道有一个问题/答案用UITextfield解决了这个问题,但我需要用UITextView来解决这个问题。

6 个答案:

答案 0 :(得分:124)

您可以为UITextView禁用键盘建议/自动完成/ QuickType,它可以阻止像4S这样的较小屏幕上的文本,如本例所示

使用以下行:

myTextView.autocorrectionType = UITextAutocorrectionTypeNo;

enter image description here enter image description here

此外,如果您只想在特定屏幕上执行此操作,例如定位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
    }
}

答案 1 :(得分:52)

为了完整起见,我想补充一点,您也可以在Interface Builder中执行此操作。

要在UITextFieldUITextView Attributes Inspector设置CorrectionNo上停用{{1}}或{{1}}上的键盘建议。

enter image description here

答案 2 :(得分:7)

我使用以下方法创建了一个UITextView类别类:

- (void)disableQuickTypeBar:(BOOL)disable
{
    self.autocorrectionType = disable ? UITextAutocorrectionTypeNo : UITextAutocorrectionTypeDefault;

    if (self.isFirstResponder) {
        [self resignFirstResponder];
        [self becomeFirstResponder];
    }
}

我希望有一个更清洁的方法。此外,它假设自动更正模式为Default,对于每个文本视图可能并非总是如此。

答案 3 :(得分:2)

在Swift 2中:

myUITextField.autocorrectionType = UITextAutocorrectionType.No

答案 4 :(得分:0)

在Swift 4.x中:

myUTTextField.autocorrectionType = .no

答案 5 :(得分:0)

正如其他人所说,您可以使用:

textView.autocorrectionType = .no

但是我也注意到人们在努力使自动完成栏换掉很费劲,因为如果当您更改其autocorrectionType类型时textView已经是firstResponder,它将不会更新键盘。无需尝试将firstResponder状态重新分配并重新分配给textView来实现更改,您只需调用:

textView.reloadInputViews()

,这应该隐藏自动完成栏。参见https://developer.apple.com/documentation/uikit/uiresponder/1621110-reloadinputviews