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

Ril*_*eyE 215 colors cursor uitextfield uitextview ios

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

这甚至可能吗?

Dis*_*Dev 493

如果您的目标是iOS 7+,则可以轻松实现这一目标.只需使用外观代理使用光标更改字段的tintColor,它将应用于整个应用程序:

Swift 3.0:

UITextField.appearance().tintColor = .black 
Run Code Online (Sandbox Code Playgroud)

Objective-C的:

[[UITextField appearance] setTintColor:[UIColor blackColor]];
Run Code Online (Sandbox Code Playgroud)

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

Swift 3.0:

myTextField.tintColor = .black 
Run Code Online (Sandbox Code Playgroud)

Objective-C的

[myTextField setTintColor:[UIColor blackColor]];
Run Code Online (Sandbox Code Playgroud)

  • 我发现这导致我的UIBarButton项目色调颜色固定为其默认值,即使我将色调颜色设置为完全不同的颜色.我通过在创建UITextFields时单独设置它们的色调颜色来解决问题. (13认同)
  • 在Swift 3.0上使用:UITextField.appearance().tintColor = UIColor.black (3认同)

小智 43

使用iOS7,您只需更改textField的tintColor即可


Pet*_*inz 18

斯威夫特3:

  UITextField.appearance().tintColor = UIColor.black
  UITextView.appearance().tintColor = UIColor.black
Run Code Online (Sandbox Code Playgroud)


Dov*_*Dov 13

注意:此答案已过期,仅应用于iOS 7之前的开发.请参阅iOS 7中使用外观代理的1行解决方案的其他答案.

在我正在处理的项目中遇到同样的问题后,我到达了这个问题.

我设法创建了一个将被AppStore审核小组接受的解决方案,因为它不使用任何现有的私有API.

我创建了一个名为DGTextField的控件,它扩展了UITextField.

  • 这在iOS 7中要容易得多 - 请参阅下面的答案:http://stackoverflow.com/a/18945907/1103584 (3认同)

Dav*_*vid 11

yourTextField.tintColor = [UIColor whiteColor];
Run Code Online (Sandbox Code Playgroud)

如果你在代码中设置它,它会起作用,因为在某种程度上,颜色触发器在Interface Builder(Xcode 6.1.1)中没有这样做.它非常适合,无需更改任何外观代理.

  • 由于某些未知的原因,它不适用于whiteColor但可以与其他所有颜色一起使用(在iOS 8上测试)。我必须设置几乎是白色但不是白色的颜色才能使其正常工作。 (2认同)

ily*_*lya 7

设置tintColorUITextFieldUITextView工作方式不同.虽然UITextField您在更新后不需要调用其他代码tintColor来更改光标颜色,但是UITextView您需要.

因此,设置后tintColorUITextView(它不IB或代码问题),你需要调用textView.tintColorDidChange(),以应用它(实际上它会通过文本视图的配置到其子视图层次).