2010-02-03 147 views
33

如何更改我的UITextField中光标的颜色?更改UITextField中光标的颜色

+1

你需要澄清一下,如果你正在使用可可或可可触摸。你可以通过在你的问题中输入实际的类名来清楚地说明这一点。 – uchuugaka 2013-09-12 09:37:24

回答

2

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

+0

是的,我尝试使用: [addNewCategoryTextField setInsertionPointColor:[UIColor redColor]]; 但我得到的警告:UITextField可能不会响应-setInsertionPointColor – monish 2010-02-03 09:27:03

+0

当我使用的函数为: [addNewCategoryTextField setInsertionPointColor:[NSColor redColor]]; 由于未在函数中声明使用NSColor,因此产生了一个错误。 – monish 2010-02-03 09:34:08

+1

这是我答案的一部分:此消息仅适用于Mac OS X,而不适用于iPhone。 在你的问题中,你还没有指定你正在开发的平台。所以我认为这是Mac OS X ... – 2010-02-03 09:53:32

14

在iOS中,UITextfield有一个textInputTraits属性。 UITextInputTraits的私人财产之一是insertionPointColor

因为它是一个未公开的属性,所以设置自定义颜色可能会让您的应用程序在App Store中被拒绝。如果这不是一个问题,这应该工作:

[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor] 
              forKey:@"insertionPointColor"]; 
+0

如果它是无证的(私人),那么你肯定会被苹果拒绝。 – 2013-01-18 21:55:15

+0

有人试过这个,并得到苹果的拒绝? – Klaas 2013-03-09 23:19:17

+1

这在iOS 6中效果很好。在iOS 7中使用色调颜色。我会让你知道,如果应用程序被拒绝,但其他人已经使用这个技巧没有问题。 – phatmann 2013-10-15 01:07:02

6
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"]; 
80

与iOS 7,你可以简单地改变UITextFieldtintColor财产。这将影响文本光标的颜色和文本选择高亮颜色。

您可以在代码中做到这一点...

textField.tintColor = [UIColor redColor]; 

...或者在Interface Builder:

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

您也可以使用应用中的所有文本域做到这一点UITextField外观代理:

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

以下是仿真器屏幕截图,其中显示了其他普通iOS 7文本字段的颜色,其色调设置为红色。

文本光标截图:

Text cursor screenshot

文本选择截图:

Text selection screenshot

+8

对我来说,奇怪的是,如果你在界面构建器中设置它,那么它不工作:我怀疑显示的项目是针对UIView本身,“不是”文本字段方面本身。 – Fattie 2014-07-24 16:26:36

+1

与@Joe Blow相同,只有在您以编程方式设置时才能使用。而且,它也不适用于模拟器,只能在真实的设备上运行。奇怪 – tbaranes 2015-02-09 08:45:33

1

Durgesh的做法确实工作。

我也多次使用过这样的KVC解决方案。 尽管它似乎是无证的,但它的工作原理。坦率地说,你在这里不使用任何 私有方法 - 只有键值编码是合法的。

它与[addNewCategoryTextField textInputTraits]截然不同。

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

+1

@Sathish事实上,这是一个答案!如果他发表了评论,它会值得吗? – 2014-08-27 10:26:25