是否可以在不使用私有API的情况下获取 UITextField
的选择背景颜色?
答案 0 :(得分:2)
不,没有公共API。
您可以尝试使用私有API:
UITextField
有一个名为selectionHighlightColor
的实例方法,UIColor
有一个同名的类方法。两者都返回相同的颜色,应为[UIColor colorWithRed:0 green:.33 blue:.65 alpha:.2]
。
答案 1 :(得分:1)
没有可用的实际方法,但我只是写了一个使用UILongPressGestureRecognizer来完成这个技巧的方法。目前还不清楚你是想要设置所选的背景颜色还是只是阅读它?但你可以尝试一下,也许它会给你一些想法:
-(void)viewDidLoad
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(selectionDetected:)];
longPress.minimumPressDuration=0.3;//you could vary this value for whatever you prefer
[self.yourTextField addGestureRecognizer:longPress];
[longPress release];
}
-(void)selectionDetected:(UILongPressGestureRecognizer*)longPress
{
if(longPress.state==1)
{
self.yourTextField.backgroundColor = [UIColor blueColor];//selected
}
else if(longPress.state==3)
{
self.yourTextField.backgroundColor= [UIColor orangeColor];//no longer selected..put back to original color
}
}
在用户抬起手指(即使它们在屏幕上移动)之前,它仍将保持“选定”颜色。不确定这是否真的是你正在寻找的东西,但也许它会帮助某人。
答案 2 :(得分:1)
基于phix23's answer,您可以创建UITextField
子类并覆盖selectionHighlightColor
属性。像:
- (UIColor *)selectionHighlightColor{
return [UIColor clearColor];
}
在iOS 9.3中测试,也在生产中
答案 3 :(得分:0)
没有Apple没有提供这样的api。