Ich versuche, eine App für iOS8 zu aktualisieren, die über eine Chat-Benutzeroberfläche verfügt. Die neue Quicktype-Tastatur verbirgt jedoch die Textansicht. Daher möchte ich sie programmgesteuert oder im Interface-Builder deaktivieren.
Ist es irgendwie möglich oder nur der Benutzer kann es in den Geräteeinstellungen ausschalten?
Ich weiß, dass es eine Frage/Antwort gibt, die dieses Problem mit einer UITextfield
löst, aber ich muss es mit einer UITextView
tun.
Sie können die Tastaturvorschläge/autocomplete/QuickType für eine UITextView deaktivieren, die den Text auf kleineren Bildschirmen wie 4S blockieren kann, wie in diesem Beispiel gezeigt
mit der folgenden Zeile:
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
Und wenn Sie dies nur auf einem bestimmten Bildschirm tun möchten, z. B. als Ziel für die 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
}
}
Der Vollständigkeit halber möchte ich noch hinzufügen, dass Sie dies auch im Interface Builder
tun können.
So deaktivieren Sie die Tastaturvorschläge für UITextField
oder UITextView
- setzen Sie im Attributes Inspector
Correction
auf No
.
Ich habe eine UITextView-Kategorieklasse mit der folgenden Methode erstellt:
- (void)disableQuickTypeBar:(BOOL)disable
{
self.autocorrectionType = disable ? UITextAutocorrectionTypeNo : UITextAutocorrectionTypeDefault;
if (self.isFirstResponder) {
[self resignFirstResponder];
[self becomeFirstResponder];
}
}
Ich wünschte, es gäbe einen saubereren Ansatz. Es wird auch davon ausgegangen, dass der Autokorrekturmodus Default
war, was möglicherweise nicht immer für jede Textansicht gilt.
In Swift 2:
myUITextField.autocorrectionType = UITextAutocorrectionType.No
In Swift 4.x:
myUTTextField.autocorrectionType = .no