UITextField选择背景颜色

时间:2013-07-08 13:28:34

标签: cocoa-touch uitextfield

是否可以在不使用私有API的情况下获取 UITextField的选择背景颜色?

4 个答案:

答案 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。