Ich habe ein UITextField mit einer benutzerdefinierten Schriftart, alles funktionierte bis Swift Update auf 1.2 und 2.0. Danach, jedes Mal, wenn ich versuche, ein Textfeld zu bearbeiten, ändert es seine Schriftart in eine andere, die eine Art Times New Roman scheint. Hat jemand Erfahrung damit?
Ich bin auf dasselbe Problem gestoßen und habe eine Lösung gefunden. Das Problem besteht darin, dass setSecureTextEntry
die Schriftart ändert, wenn sie gesetzt ist, und sie nicht ändert, wenn sie nicht gesetzt ist. In der Tat können Sie die Schriftart nie ändern, solange Ihr UITextField
den ersten Responder hat.
Der Trick ist resignFirstResponder
, bevor Sie setSecureTextEntry:
und dann becomeFirstResponder
erneut aufrufen. Diese Funktion wird funktionieren (ab iOS 9.2), löst jedoch die Animation zum Ein- und Ausblenden der Tastatur aus und führt dazu, dass der Bildschirm "wackelt". Um das zu umgehen, müssen Sie auch die Tastaturanimation ausschalten.
Hier ist meine vollständige Lösung:
%Vor%PS: Dies ist kein Swift-Bug. Es ist ein UIKit-Fehler. Ich hatte das gleiche Problem mit Objective-C.
Ich hatte einen merkwürdigen Fall von Zeichensätzen, die Größe und Schriftart ändern, wenn secureTextEntry für ein UiTextField mit einer Tastenaktion umgeschaltet wurde. Musste die Schriftart für das UiTextField explizit mit diesen Codezeilen verwalten:
%Vor%Vollständiger Code, der im Passwort anzeigen Button verwendet wird:
%Vor% Da ich benutzerdefinierte Schriftarten verwendet habe, müssen wir die ursprüngliche Schriftart beibehalten. Erstellen Sie eine Erweiterung für UITextField
:
Wo könnte es so implementiert werden:
%Vor%Alle diese Antworten funktionieren ziemlich gut, aber ich musste eine andere Lösung verwenden, um die Ergebnisse zu erzielen, die ich brauchte, da ich eine benutzerdefinierte Schriftart verwende.
Sie müssen das Textfeld attributed
im Storyboard-Inspektorfenster für das UITextField wie folgt erstellen:
Im Code müssen Sie dann das Umschalten der Sichtbarkeit verwalten und den zugewiesenen Text jedes Mal festlegen, um sicherzustellen, dass er richtig formatiert ist. Ich trete auch FirstResponder () auf das Feld zurück, nur um einige Positionierungsfehler zu beheben, die ich bis jetzt noch nicht herausgefunden habe.
%Vor%