2014-09-20 77 views
62

我试图更新iOS8的应用程序,它有一个聊天界面,但新的Quicktype键盘隐藏文本视图,所以我想通过编程或在界面构建器中关闭它。以编程方式禁用iOS8 QuickType键盘上UITextView

是否有可能以某种方式或只有用户可以在设备设置中关闭它?

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

+1

我不知道你能不能或没有,但它似乎并不像一个好主意呢。我使用的应用在Android上做了类似的事情,这真的令人沮丧。我认为最好是解决它,让用户决定他们是否想要这些建议。 – Hassan 2014-09-20 17:18:47

+1

@Hassan我的问题是,它销毁我的用户界面,所以我想隐藏/禁用任何建议。 – rihe 2014-09-20 17:29:38

+0

是的,但是如果您可以将文本视图向上移动以适应键盘,而不是隐藏建议,会不会更好?再次,我很抱歉,因为我实际上不知道该怎么做,我只是提出一个友好的建议。 – Hassan 2014-09-20 17:54:46

回答

5

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

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

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

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

114

您可能禁用键盘建议/自动填充/ QuickType一种能阻止在像4S小屏幕的文本作为显示在此示例

使用以下行一个UITextView:

myTextView.autocorrectionType = UITextAutocorrectionTypeNo; 

enter image description hereenter 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

UITextAutocorrectionTypeNo在iphone 6不工作 - iOS 8.1 – iGW 2014-11-10 11:51:54

+2

@iGW当我这样做后,UITextView或UITextField已经firstResponder它也没有为我工作。尝试在此之前设置它,或者触发resign并成为FirstResponder(前者显然是这样做的“正确”和更合适的方式。 – 2015-06-08 15:11:05

+0

如何获得对textView的引用,给定UIWebView? – 2015-08-31 17:34:01

47

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

要在UITextFieldUITextView禁用键盘的建议 - 在Attributes Inspector设置CorrectionNo

enter image description here

+0

这对我不起作用QuickType的建议仍然显示在我的键盘上,但是这个程序的答案对我来说确实有效 – 2014-12-10 17:57:44

+0

奇怪的是,这对你没有用,因为它本质上是把'autocorrectionType 'to'UITextAutocorrectionTypeNo'。你在代码中做的是同样的事情,你可以重新检查,如果行为我们不会改变告诉我你使用的Xcode和iOS版本是什么? – 2014-12-10 19:41:51

+1

这对我有用(Xcode 6.3 beta 2)。 – 2015-02-25 19:12:44

1

在斯威夫特2:

myUITextField.autocorrectionType = UITextAutocorrectionType.No 
+0

它不适用于iPad。 – Dmitry 2016-04-27 11:18:40