2

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

4

4 回答 4

2

不,没有公开的 API。

不过,您可以使用私有 API 进行尝试:

UITextField有一个名为的实例方法selectionHighlightColorUIColor一个同名的类方法。两者都返回应该是相同的颜色[UIColor colorWithRed:0 green:.33 blue:.65 alpha:.2]

于 2013-07-11T12:52:55.573 回答
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
    }
}

在用户抬起手指之前(即使他们在屏幕上移动),它将保持“选定”颜色。不确定这是否真的是您正在寻找的东西,但也许它会对某人有所帮助。

于 2013-07-17T23:32:55.790 回答
1

根据phix23 的回答,您可以创建一个UITextField子类并覆盖该selectionHighlightColor属性。喜欢:

- (UIColor *)selectionHighlightColor{
    return [UIColor clearColor];
}

在 iOS 9.3 中测试,也在生产中

于 2016-05-03T08:49:17.493 回答
0

NO Apple 不提供此类 API。

于 2013-07-17T13:13:23.267 回答