Ich versuche, eine App für iOS8 zu aktualisieren, die über eine Chat-Oberfläche verfügt, aber die neue Quicktype-Tastatur verbirgt die Textansicht. Daher möchte ich sie programmgesteuert oder im Interface Builder deaktivieren.
Ist es irgendwie möglich oder nur die Benutzer können es in den Geräteeinstellungen ausschalten?
Ich weiß, dass es eine Frage / Antwort gibt, die dieses Problem mit a löst UITextfield
, aber ich muss es mit a tun UITextView
.
ios
objective-c
xcode
ios8
rihe
quelle
quelle
Antworten:
Sie können die Tastaturvorschläge / Autocomplete / QuickType für eine UITextView deaktivieren, die den Text auf kleineren Bildschirmen wie dem 4S blockieren kann, wie in diesem Beispiel gezeigt
mit folgender Zeile:
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
Und weiter, wenn Sie dies nur auf einem bestimmten Bildschirm tun möchten, z. B. auf dem 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 } }
quelle
Responder
dieser ImplementierungenUIKeyInput
kann die Getter-Methode für diese Variable implementiert werden, um zurückzukehrenUITextAutocorrectionTypeNo
, um den gleichen Effekt zu erzielen, wenn a nicht verwendet wirdUITextField
.Der Vollständigkeit halber möchte ich hinzufügen, dass Sie dies auch in der tun können
Interface Builder
.So deaktivieren Sie Tastaturvorschläge auf
UITextField
oderUITextView
- imAttributes Inspector
SetCorrection
aufNo
.quelle
autocorrectionType
zuUITextAutocorrectionTypeNo
. Das gleiche, was Sie im Code tun. Könnten Sie das überprüfen und wenn sich das Verhalten nicht ändert, sagen Sie mir, welche Versionen von Xcode und iOS Sie verwenden?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. Außerdem wird davon ausgegangen, dass der automatische Korrekturmodus aktiviert war
Default
, was möglicherweise nicht immer für jede Textansicht gilt.quelle
In Swift 2:
myUITextField.autocorrectionType = UITextAutocorrectionType.No
quelle
In Swift 4.x:
quelle
Wie andere gesagt haben, können Sie verwenden:
Ich habe aber auch bemerkt, dass Leute Probleme damit haben, die Autovervollständigungsleiste tatsächlich auszutauschen, denn wenn die Textansicht bereits der erste Antwortende ist, wenn Sie ihren Autokorrekturtyp ändern, wird die Tastatur nicht aktualisiert. Anstatt zu versuchen, den Status "firstResponder" zurückzutreten und der textView neu zuzuweisen, um die Änderung zu bewirken, können Sie einfach Folgendes aufrufen:
und das sollte die Autocomplete-Leiste verbergen. Siehe https://developer.apple.com/documentation/uikit/uiresponder/1621110-reloadinputviews
quelle