更改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时,它不是第一种情况。