Ich frage mich, ob ich die Farbe des Cursors / Carets in einem UITextField
(und UITextView
wenn es die gleiche Antwort ist) in iOS ändern soll . Ich habe Antworten für die OSX-Entwicklung gesehen, aber nichts für iOS.
Ist das überhaupt möglich?
ios
colors
uitextfield
cursor
uitextview
RileyE
quelle
quelle
UITextField
, einschließlich der VorgehensweiseAntworten:
Wenn Sie auf iOS 7+ abzielen, wurde dies erheblich vereinfacht. Ändern Sie einfach
tintColor
das Feld mit einem Cursor mithilfe des Darstellungs-Proxys und es gilt für die gesamte App:Swift 3.0:
Ziel c:
Die gleiche Antwort gilt für eine Person
UITextField
:Swift 3.0:
Ziel c
quelle
Mit iOS7 können Sie einfach tintColor des textField ändern
quelle
Swift 3:
quelle
Hinweis: Diese Antwort ist veraltet und sollte nur für die Entwicklung vor iOS 7 verwendet werden. Weitere Antworten für eine 1-Zeilen-Lösung finden Sie unter dem Darstellungs-Proxy in iOS 7.
Ich kam zu dieser Frage, nachdem ich in einem Projekt, an dem ich arbeitete, auf dasselbe Problem gestoßen war.
Es ist mir gelungen, eine Lösung zu erstellen, die vom AppStore-Überprüfungsteam akzeptiert wird, da keine vorhandenen privaten APIs verwendet werden.
Ich habe ein Steuerelement namens DGTextField erstellt, das UITextField erweitert.
quelle
Es funktioniert, wenn Sie es im Code festlegen, da der Farbauslöser dies im Interface Builder (Xcode 6.1.1) nicht tut . Es passte gut, ohne dass ein Erscheinungsbild-Proxy geändert werden musste.
quelle
Einstellung
tintColor
fürUITextField
undUITextView
funktioniert anders. Zwar müssenUITextField
Sie nach dem Update keinen zusätzlichen Code aufrufen, um die CursorfarbetintColor
zu ändern, aberUITextView
Sie müssen.Nach der Einstellung
tintColor
fürUITextView
(es spielt keine Rolle in IB oder im Code) müssen Sie aufrufen,textView.tintColorDidChange()
um es anzuwenden (tatsächlich wird die Konfiguration der Textansicht an die Hierarchie der Unteransichten übergeben).quelle
Das hat bei mir schnell geklappt:
Sie können dies auch im Storyboard festlegen: https://stackoverflow.com/a/18759577/3075340
quelle
Instance member 'tintcolor' cannot be used on type 'UITextField'
Ein allgemeinerer Ansatz wäre, die tintColor des UIView-Erscheinungsbilds festzulegen.
Sinnvoll, wenn Sie viele Standardelemente der Benutzeroberfläche verwenden.
quelle
[UIView appearance]
Versuchen Sie, es funktioniert für mich.
quelle
Dies ist nur durch Zugriff auf eine private Eigenschaft möglich und kann daher zu einer Ablehnung der Apple AppStore-App führen.
Schauen Sie sich diese Stackoverflow-Frage an
quelle
Durgeshs Ansatz funktioniert.
Ich habe solche KVC-Lösungen auch oft verwendet. Trotzdem scheint es undokumentiert zu sein, aber es funktioniert. Ehrlich gesagt verwenden Sie hier keine privaten Methoden - nur die legale Schlüsselwertcodierung.
PS Gestern erschien meine neue App im AppStore ohne Probleme mit diesem Ansatz. Und es ist nicht der erste Fall, wenn ich KVC zum Ändern einiger schreibgeschützter Eigenschaften (wie navigatonBar) oder privater ivars verwende.
quelle
Für die Interface Builder-Version mit Swift
quelle
Wenn das von
UITextField
ist,UISearchBar
holen Sie zuerst dastextField
vonsearchBar
und wenden Sie dann dietintColor
Eigenschaft an:quelle
Swift 4
Rufen Sie in viewDidLoad () einfach den folgenden Code auf:
CODE-PROBE
quelle
Ich denke, wenn Sie einige benutzerdefinierte Farben möchten, können Sie in den
Assets.xcassets
Ordner gehen , mit der rechten Maustaste klicken und auswählenNew Color Set
, nachdem Sie die von Ihnen festgelegte Farbe erstellt haben, geben Sie ihr einen Namen, um sie wiederzuverwenden.Und Sie können es einfach so verwenden:
Getestet unter macOS 10.15 / iOS 13 / Swift 5
quelle
Für Leute, die in SwiftUI nach dem Äquivalent suchen, ist
Textfield
diesaccentColor
:quelle