Cocoa touch UITextField选择背景色
有没有可能在不使用私有API的情况下获取UITextField的选择背景色?没有,没有公共API 不过,您可以使用专用API进行尝试: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
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
或类似的后台类中获取颜色吗?但是顺便说一句,如果您只是想阅读所选的背景颜色,您可以详细说明为什么吗,如果您只是想阅读选定的背景色,您能详细说明为什么吗?谢谢,但问题是关于获取默认颜色而不是覆盖并设置一个。谢谢,但问题是关于获取默认颜色而不是覆盖并设置一个。