更改UITextField和UITextView光标/插入符颜色

我想知道在iOS中更改UITextField (和UITextView如果它的相同的答案)游标/插入符的颜色。 我已经看到OSX开发的答案,但没有iOS的。

这甚至有可能吗?

如果你的目标是iOS 7+,这已经变得更容易了。 只需使用外观代理使用游标更改字段的tintColor,并将应用于整个应用程序:

Swift 3.0:

 UITextField.appearance().tintColor = .black 

Objective-C的:

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

同样的答案适用于单个UITextView:

Swift 3.0:

 myTextField.tintColor = .black 

Objective-C的

 [myTextField setTintColor:[UIColor blackColor]]; 

使用iOS7,您可以简单地更改textField的tintColor

注意:这个答案已经过时,只能用于iOS 7之前的开发。 使用iOS 7中的外观代理,请参阅其他答案以获得1行解决scheme。

在我正在进行的项目中遇到同样的问题后,我才回到这个问题。

我设法创build了一个将被AppStore评审团队接受的解决scheme,因为它不使用任何现有的私有API。

我创build了一个名为DGTextField的控件来扩展UITextField。

Swift 3:

  UITextField.appearance().tintColor = UIColor.black UITextView.appearance().tintColor = UIColor.black 
 yourTextField.tintColor = [UIColor whiteColor]; 

如果你把它设置在代码中,它会起作用。“ 因此,在界面生成器 (Xcode 6.1.1) 中,颜色触发器不会这样做 。 它不需要更改任何外观代理就很适合。

这在迅速为我工作:

 UITextField.tintColor = UIColor.blackColor() 

您还可以在故事板中设置此: https : //stackoverflow.com/a/18759577/3075340

更一般的方法是设置UIView的外观的tintColor。

 UIColor *myColor = [UIColor purpleColor]; [[UIView appearance] setTintColor:myColor]; 

如果您使用许多默认UI元素,则是有意义的。

只有通过访问私有财产才有可能导致Apple AppStore应用拒绝。

看看这个Stackoverflow的问题

试试吧,它为我工作。

 [[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"]; 

Durgesh的方法确实有效。

我也多次使用这种KVC解决scheme。 尽pipe它似乎是无证的,但它的工作。 坦率地说,在这里你不使用任何私有方法 – 只有键值编码是合法的。

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