Objective c 更改UITextField中光标的颜色

Objective c 更改UITextField中光标的颜色,objective-c,swift,cocoa-touch,uitextfield,Objective C,Swift,Cocoa Touch,Uitextfield,如何更改我的UITextField中光标的颜色?如果您在Mac OS X上开发,那么您可以尝试方法。有关更多详细信息,请参阅参考。在iOS中,UITextfield具有textInputRaits属性。uit的私有属性之一是insertionPointColor 因为它是一个未记录的属性,设置自定义颜色可能会导致应用商店拒绝您的应用。如果这不是一个问题,这应该是可行的: [[addNewCategoryTextField textInputTraits] setValue:[UIColor re

如何更改我的
UITextField
中光标的颜色?

如果您在Mac OS X上开发,那么您可以尝试
方法。有关更多详细信息,请参阅参考。

在iOS中,
UITextfield
具有
textInputRaits
属性。
uit的私有属性之一是
insertionPointColor

因为它是一个未记录的属性,设置自定义颜色可能会导致应用商店拒绝您的应用。如果这不是一个问题,这应该是可行的:

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

使用iOS 7,您只需更改
UITextField
tintColor
属性即可。这将影响文本光标的颜色和文本选择突出显示的颜色

您可以在代码中执行此操作

textField.tintColor = [UIColor redColor];

在Swift 4中:

textField.tintColor = UIColor.red
UITextField.appearance().tintColor = UIColor.red
…或在界面生成器中:

您还可以使用
UITextField
外观代理对应用程序中的所有文本字段执行此操作:

[[UITextField appearance] setTintColor:[UIColor redColor]];
在Swift 4中:

textField.tintColor = UIColor.red
UITextField.appearance().tintColor = UIColor.red
下面是模拟器屏幕截图,显示了原本普通的iOS 7文本字段的色调设置为红色时的样子

文本光标屏幕截图:

文本选择屏幕截图:


杜格什的方法确实有效

我也多次使用这种KVC解决方案。 尽管它似乎没有被记录在案,但它是有效的。坦白地说,你没有使用任何 这里的私有方法-只有合法的键值编码

它与[addNewCategoryTextField TextInputRaits]截然不同


另外,昨天我的新应用出现在AppStore上,这种方法没有任何问题。当我使用KVC更改某些只读属性(如NavigationBar)或专用IVAR时,这不是第一种情况。

要在整个应用程序中更改
光标
颜色
,对于
UITextField/UITextView
,也可以使用外观代理,如下所示:

UITextField.appearance().tintColor = .green
UITextView.appearance().tintColor  = .green

是的,我试过使用as:[addNewCategoryTextField setInsertionPointColor:[UIColor redColor];但是我得到的警告是:UITextField可能不响应-setInsertionPointColor,当我使用函数时为:[addNewCategoryTextField setInsertionPointColor:[NSColor redColor]];一个错误被称为NSColor not declared use in function。这是我回答的一部分:这条消息只适用于Mac OS X,而不适用于iPhone。在您的问题中,您没有指定正在开发的平台。所以我假设它是Mac OS X…如果您使用的是
UITextField
对象,则不是。这只是iPhone SDK。如果它没有文档(私有),那么你几乎肯定会被苹果拒绝。这在iOS 6中非常有效。在iOS 7中,使用着色颜色。如果应用被拒绝,我会告诉你,但其他人使用此技巧没有问题。我的应用没有因为使用此技巧而被拒绝。但是,在iOS 10中,此解决方案会导致崩溃,因为
insertionPointColor
特性已被删除。不要再使用此解决方案!您需要澄清您是在使用Cocoa还是Cocoa touch。您可以通过在问题中添加实际的类名来说明这一点。奇怪的是,如果您在interface builder中设置它,它将不起作用:我怀疑显示的项目是针对UIView本身的,而不是文本字段方面本身。与@Joe Blow相同,只有通过编程设置它才能起作用。此外,它也不能在模拟器上工作,只能在真实设备上工作。Strange@Sathish事实上,这是一个答案!他发表评论是否值得?