Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch UITextField选择背景色_Cocoa Touch_Uitextfield - Fatal编程技术网

Cocoa touch UITextField选择背景色

Cocoa touch UITextField选择背景色,cocoa-touch,uitextfield,Cocoa Touch,Uitextfield,有没有可能在不使用私有API的情况下获取UITextField的选择背景色?没有,没有公共API 不过,您可以使用专用API进行尝试: UITextField有一个名为selectionHighlightColor的实例方法,UIColor有一个同名的类方法。两者都返回相同的颜色,应该是[UIColor colorWithRed:0 green:.33 blue:.65 alpha:.2]否,没有用于此的公共API 不过,您可以使用专用API进行尝试: UITextField有一个名为selec

有没有可能在不使用私有API的情况下获取UITextField的选择背景色?

没有,没有公共API

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


UITextField
有一个名为
selectionHighlightColor
的实例方法,
UIColor
有一个同名的类方法。两者都返回相同的颜色,应该是
[UIColor colorWithRed:0 green:.33 blue:.65 alpha:.2]
否,没有用于此的公共API

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


UITextField
有一个名为
selectionHighlightColor
的实例方法,
UIColor
有一个同名的类方法。两者都返回相同的颜色,应该是
[UIColor color WITHRED:0 green:33 blue:65 alpha:2]
没有苹果不提供这样的API。

没有苹果不提供这样的API。

没有实际的方法可用,但我刚刚编写了一个使用UILongPressGestureRecognitor的方法。不清楚您是要设置选定的背景色还是只阅读背景色?但你可以尝试一下,也许它会给你一些想法:

-(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
    }
}

直到用户抬起手指(即使他们在屏幕上移动),它将保持“选定”的颜色。不确定这是否真的是你想要的,但也许它会帮助某些人。

目前还没有一个实际的方法可用,但我刚刚编写了一个使用UILongPressGestureRecognitor的方法。不清楚您是要设置选定的背景色还是只阅读背景色?但你可以尝试一下,也许它会给你一些想法:

-(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
    }
}
直到用户抬起手指(即使他们在屏幕上移动),它将保持“选定”的颜色。不确定这是否真的是您要找的,但可能会对某人有所帮助。

基于此,您可以创建
UITextField
子类并覆盖
selectionHighlightColor
属性。比如:

- (UIColor *)selectionHighlightColor{
    return [UIColor clearColor];
}
在iOS 9.3中测试,也在生产中基于,您可以创建
UITextField
子类并覆盖
selectionHighlightColor
属性。比如:

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

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

打开了Radar#14413759将其公开。无论如何,谢谢。顺便说一句,从
NSLayoutManager
NSTextStorage
或类似的支持类中获取颜色是否可能?请打开Radar#14413759将其公开。无论如何,谢谢。顺便说一句,难道不可能从
NSLayoutManager
NSTextStorage
或类似的后台类中获取颜色吗?但是顺便说一句,如果您只是想阅读所选的背景颜色,您可以详细说明为什么吗,如果您只是想阅读选定的背景色,您能详细说明为什么吗?谢谢,但问题是关于获取默认颜色而不是覆盖并设置一个。谢谢,但问题是关于获取默认颜色而不是覆盖并设置一个。