如何更改文本输入指示器的颜色?

时间:2012-03-15 18:59:28

标签: iphone objective-c uitextfield uitextview

在UITextView和UITextField中可以看到 - 闪烁的蓝线表示您键入的任何内容。我已经看到一些应用程序改变了这种颜色,并不确定如何做到这一点。如何更改颜色?

6 个答案:

答案 0 :(得分:8)

在IOS 7中你可以简单地设置 tintColor ,它会改变视图和子视图中所有活动元素的颜色,包括光标颜色:

_textField.tintColor = [UIColor redColor];

答案 1 :(得分:2)

[[textField textInputTraits] setValue:[UIColor redColor] forKey:@"insertionPointColor"];

答案 2 :(得分:1)

试试这个:

[[textField valueForKey:@"textInputTraits"] setValue:CUSTOM_COLOR forKey:@"insertionPointColor"];

尽管它似乎没有记录,但它确实有效。坦白说,你不要使用任何 这里的私有方法 - 只有合法的键值编码。

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

答案 3 :(得分:0)

没有记录的方法来更改指针的颜色。 Hovewer,有一个无证件 textField的属性,即textInputTraits,它是UITextInputTraits个实例。

您可以尝试使用此代码来实现此功能,但您的应用可能会在审核过程中被拒绝。

[[textField textInputTraits] setValue:[UIColor redColor] forKey:@"insertionPointColor"];

取自https://stackoverflow.com/a/4273440/736649

答案 4 :(得分:0)

对于iOS 10 SDK,只有指标和Objective-C(有一天会被遗漏)我的工作解决方案是:

for (UIView *subView in self.sBar.subviews){
    for (UIView *ndLevelSubView in subView.subviews){

        if ([ndLevelSubView isKindOfClass:[UITextField class]])
        {
            UITextField * sbTextField = (UITextField *)ndLevelSubView;
            [[sbTextField valueForKey:@"textInputTraits"] setValue:[UIColor n2pMainPurpleColor] forKey:@"insertionPointColor"];
            break;
        }

    }

}

答案 5 :(得分:-1)

更改色调颜色,(iOS 7)

Change the tint color in the nib

或以编程方式执行

myTextField.tintColor = [UIColor blackColor];