变化的UITextField和UITextView的光标/插入颜色(Change UITextFie

2019-06-26 10:59发布

我想了解一下改变光标/插入符号的颜色中UITextField (和UITextView如果同样的答案)中的iOS。 我已经看到了OSX发展的答案,但没有为iOS。

这甚至可能吗?

Answer 1:

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

雨燕3.0:

UITextField.appearance().tintColor = .black 

Objective-C的:

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

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

雨燕3.0:

myTextField.tintColor = .black 

Objective-C的

[myTextField setTintColor:[UIColor blackColor]];


Answer 2:

随着iOS7,你可以简单地改变文本框的tintColor



Answer 3:

斯威夫特3:

  UITextField.appearance().tintColor = UIColor.black
  UITextView.appearance().tintColor = UIColor.black


Answer 4:

注意:这个答案是过时的,应仅用于前期的iOS 7的开发。 看到用于使用在IOS 7的外观代理一个1线溶液中的其它的答案。

我来到了这个问题后,我在一个项目我工作面临着同样的问题。

我设法创建将由AppStore的审查小组被接受,因为它不使用任何现有的私人API的解决方案。

我创建了一个名为DGTextField延伸UITextField控件。



Answer 5:

yourTextField.tintColor = [UIColor whiteColor];

它的工作原理,如果你在代码中设置它,“COS不知何故颜色触发没有做它在界面生成器 (Xcode的6.1.1)。 它适合良好,没有必要改变什么样子的代理。



Answer 6:

设置tintColorUITextFieldUITextView工作方式不同。 虽然UITextField你不需要更新后调用额外的代码tintColor改变光标颜色,但UITextView需要。

因此,设置完成后tintColorUITextView (它不IB或代码问题),你需要调用textView.tintColorDidChange()以应用它(实际上它会向下传递文本视图的config其子视图层次)。



Answer 7:

这迅速为我工作:

UITextField.tintColor = UIColor.blackColor()

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



Answer 8:

一个更普遍的做法是设置了UIView的外观的tintColor。

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

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



Answer 9:

它通过访问私有财产,因此可能会导致苹果应用商店应用排斥才是可能的。

看看这个问题#1



Answer 10:

尝试,它为我工作。

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


Answer 11:

Durgesh的做法确实工作。

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

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



Answer 12:

对于Interface Builder的版本雨燕

@IBOutlet weak var tvValue: UITextView! {
        didSet {
            tvValue.tintColor = .black
        }
    }


Answer 13:

如果UITextField是从UISearchBar那么首先得到textFieldsearchBar ,然后应用tintColor属性:

let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray


Answer 14:

斯威夫特4

在viewDidLoad中()只需要调用下面的代码:

代码示例

//txtVComplaint is a textView

txtVComplaint.tintColor = UIColor.white

txtVComplaint.tintColorDidChange()


文章来源: Change UITextField and UITextView Cursor / Caret Color