40

如何更改光标的颜色UITextField

4

6 回答 6

98

使用 iOS 7 ,您可以简单地更改tintColor. UITextField这将影响文本光标的颜色和文本选择突出显示的颜色。

您可以在代码中执行此操作...

textField.tintColor = [UIColor redColor];

...

在 Swift 4 中:

textField.tintColor = UIColor.red

...或在界面生成器中:

屏幕截图显示如何在界面生成器中修改文本字段的色调

您还可以使用UITextField外观代理对应用程序中的所有文本字段执行此操作:

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

在 Swift 4 中:

UITextField.appearance().tintColor = UIColor.red

下面是模拟器屏幕截图,显示了一个普通的 iOS 7 文本字段在其色调设置为红色时的样子。

文本光标截图:

文字光标截图

文字选择截图:

文字选择截图

于 2013-09-12T08:47:54.127 回答
14

在 iOS 中,UITextfield有一个textInputTraits属性。的私有属性之一UITextInputTraitsinsertionPointColor

因为它是一个未记录的属性,设置自定义颜色可能会导致您的应用被 App Store 拒绝。如果这不是问题,这应该有效:

[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor]
                                             forKey:@"insertionPointColor"];
于 2010-11-25T03:13:10.760 回答
6
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];
于 2013-06-05T04:22:28.750 回答
3

如果你是在 Mac OS X 上开发,那么你可以试试这个setInsertionPointColor:方法。有关更多详细信息,请参阅NSTextView参考。

于 2010-02-03T08:55:30.767 回答
2

Durgesh 的方法确实有效。

我也多次使用过这样的 KVC 解决方案。尽管它似乎没有记录,但它确实有效。坦率地说,您在这里没有使用任何私有方法——只有合法的键值编码。

它与 [addNewCategoryTextField textInputTraits] 截然不同。

PS 昨天我的新应用出现在 AppStore 上,这种方法没有任何问题。当我使用 KVC 更改一些只读属性(如 navigatonBar)或私有 ivars 时,这不是第一种情况。

于 2013-09-16T18:47:55.047 回答
0

要更改cursor color整个应用程序UITextField/UITextView,还可以使用外观代理,如下所示,

UITextField.appearance().tintColor = .green
UITextView.appearance().tintColor  = .green
于 2018-07-16T06:58:28.307 回答