web-dev-qa-db-ja.com

UITextViewでiOS8 Quicktypeキーボードをプログラムで無効にする

チャットインターフェイスを備えたiOS8用のアプリを更新しようとしていますが、新しいQuicktypeキーボードはテキストビューを非表示にするため、プログラムまたはインターフェイスビルダーでオフにします。

どういうわけか、ユーザーだけがデバイス設定でオフにできますか?

UITextfieldでこの問題を解決する質問/回答があることは知っていますが、UITextViewでそれを行う必要があります。

68
rihe

この例に示すように、4Sのような小さな画面でテキストをブロックできるUITextViewのキーボード候補/オートコンプリート/ QuickTypeを無効にすることができます

次の行で:

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
    }
}
125
mihai

完全を期すために、Interface Builderでもこれを実行できることを追加したいと思います。

UITextFieldまたはUITextViewでキーボードの提案を無効にするには、Attributes InspectorCorrectionNoに設定します。

enter image description here

52

次のメソッドを使用してUITextViewカテゴリクラスを作成しました。

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

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

もっときれいなアプローチがあればいいのに。また、自動修正モードがDefaultであったと想定しています。これは、すべてのテキストビューで常に正しいとは限りません。

7
DZenBot

Swift 2:

myUITextField.autocorrectionType = UITextAutocorrectionType.No
2
Rao

Swift 4.xの場合:

myUTTextField.autocorrectionType = .no
0
Yogesh Bharate