UiTextField ändert die Schriftart während der Bearbeitung in Swift 1.2 & 2.0

8

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?

    
matCode 11.02.2015, 12:52
quelle

6 Antworten

10

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.

    
Alexander 13.01.2016 21:24
quelle
7

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%

Geben Sie diese Änderung an:

    
Abhijeet 27.10.2015 06:44
quelle
1

Da ich benutzerdefinierte Schriftarten verwendet habe, müssen wir die ursprüngliche Schriftart beibehalten. Erstellen Sie eine Erweiterung für UITextField :

%Vor%

Wo könnte es so implementiert werden:

%Vor%     
Daniel Galasko 27.11.2015 09:56
quelle
0

Setzen Sie nach dem Umschalten des secureTextEntry-Flags

defaultTextAttributes mit einem benutzerdefinierten font-Attribut

NSDictionary * attrsDictionary =                 @ {NSFontAttributeName: // Benutzerdefiniert};
_passwordtextfield.defaultTextAttributes = attrsDictionary;

    
Payal 06.11.2015 09:59
quelle
0

Ich musste die folgende Lösung mit dem neuesten Xcode 7.1.1 anwenden, was in meinem Fall tatsächlich funktionierte. Ich vermute, dass dieses Problem ein Framework ist.

%Vor%     
Leena 19.11.2015 07:39
quelle
0

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%     
styler1972 18.02.2016 17:43
quelle

Tags und Links