【发布时间】:2011-01-12 12:26:43
【问题描述】:
如何更改 UITextField 中光标的颜色?
【问题讨论】:
-
您需要澄清您使用的是 Cocoa 还是 Cocoa touch。您可以通过在问题中输入实际的类名来明确这一点。
标签: objective-c swift cocoa-touch uitextfield
如何更改 UITextField 中光标的颜色?
【问题讨论】:
标签: objective-c swift cocoa-touch uitextfield
在 iOS 7 中,您可以简单地更改 UITextField 的 tintColor 属性。这将影响文本光标的颜色和文本选择突出显示的颜色。
您可以在代码中执行此操作...
textField.tintColor = [UIColor redColor];
...
在 Swift 4 中:
textField.tintColor = UIColor.red
...或在界面生成器中:
您也可以使用UITextField 外观代理对应用中的所有文本字段执行此操作:
[[UITextField appearance] setTintColor:[UIColor redColor]];
在 Swift 4 中:
UITextField.appearance().tintColor = UIColor.red
下面是模拟器屏幕截图,显示了一个普通的 iOS 7 文本字段在其色调设置为红色时的样子。
文本光标截图:
文本选择截图:
【讨论】:
在 iOS 中,UITextfield 有一个 textInputTraits 属性。 UITextInputTraits 的私有属性之一是insertionPointColor。
因为它是一个未记录的属性,设置自定义颜色可能会导致您的应用被 App Store 拒绝。如果这不是问题,这应该可以:
[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor]
forKey:@"insertionPointColor"];
【讨论】:
insertionPointColor 特征已被删除。 不要再使用这个解决方案了!
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];
【讨论】:
如果你在 Mac OS X 上开发,那么你可以试试@987654321@ 方法。有关详细信息,请参阅NSTextView 参考。
【讨论】:
UITextField 对象,则不是。那只是 iPhone SDK。
Durgesh 的方法确实有效。
我也多次使用过这样的KVC方案。 尽管它似乎没有记录,但它确实有效。坦率地说,你不使用任何 这里的私有方法——只有合法的键值编码。
它与 [addNewCategoryTextField textInputTraits] 截然不同。
附:昨天我的新应用程序出现在 AppStore 上,这种方法没有任何问题。当我使用 KVC 更改一些只读属性(如 navigatonBar)或私有 ivars 时,这不是第一种情况。
【讨论】:
要将整个应用程序中的cursorcolor更改为UITextField/UITextView,也可以使用外观代理,如下所示,
UITextField.appearance().tintColor = .green
UITextView.appearance().tintColor = .green
【讨论】: