web-dev-qa-db-ja.com

UITextFieldのカーソルの色を変更する

UITextFieldのカーソルの色を変更するにはどうすればよいですか?

37
monish

IOS 7では、tintColorUITextFieldプロパティを変更するだけです。これは、テキストカーソルの色とテキスト選択のハイライト色の両方に影響します。

あなたはコードでこれを行うことができます...

textField.tintColor = [UIColor redColor];

...

Swift 4:

textField.tintColor = UIColor.red

...またはInterface Builderで:

screenshot showing how to modify tint of a text field in interface builder

UITextField外観プロキシを使用して、アプリのすべてのテキストフィールドに対してこれを行うこともできます。

[[UITextField appearance] setTintColor:[UIColor redColor]];

Swift 4:

UITextField.appearance().tintColor = UIColor.red

以下は、他の通常のiOS 7テキストフィールドが赤に設定された色合いでどのように見えるかを示すシミュレーターのスクリーンショットです。

テキストカーソルのスクリーンショット:

Text cursor screenshot

テキスト選択のスクリーンショット:

Text selection screenshot

93
Cap

IOSでは、UITextfieldにはtextInputTraitsプロパティがあります。 UITextInputTraitsのプライベートプロパティの1つはinsertionPointColorです。

ドキュメントに記載されていないプロパティであるため、カスタム色を設定すると、アプリがApp Storeから拒否される可能性があります。それが問題ではない場合、これはうまくいくはずです:

[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor]
                                             forKey:@"insertionPointColor"];
14
lemnar
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];
6
Durgesh

Mac OS Xで開発している場合は、setInsertionPointColor: 方法。詳細は NSTextView リファレンスを参照してください。

3

ダーゲッシュのアプローチは機能します。

私もそのようなKVCソリューションを何度も使用しました。文書化されていないようですが、動作します。率直に言って、ここではプライベートメソッドを使用せず、合法なKey-Valueコーディングのみを使用します。

[addNewCategoryTextField textInputTraits]とは大きく異なります。

追伸昨日、私の新しいアプリがこのアプローチで問題なくAppStoreに登場しました。そして、いくつかの読み取り専用プロパティ(navigatonBarなど)またはプライベートivarを変更するときにKVCを使用するのは、これが最初のケースではありません。

2
malex

アプリ全体でcursorcolorを変更するにはUITextField/UITextView、外観プロキシは次のように使用することもできます。

UITextField.appearance().tintColor = .green
UITextView.appearance().tintColor  = .green
0
Kamran