当用户输入viewController时,我有一个灰色UIButton
。还有一个UITextView
。如果用户在UITextView
中输入文本,则该按钮应变为红色,但如果文本视图为空白,则该按钮为灰色。如果想要做像波纹管这样的事情,如果用户输入文字,它会将颜色更改为红色,但如果用户删除文本,它会保持红色而不是返回灰色。这是我正在使用的代码:
- (void)textViewDidChange:(UITextView *)textView {
if (self.textView.text.length == 0) {
self.navigationItem.rightBarButtonItem.tintColor = [UIColor colorWithRed:193/255.5 green:193/255.0 blue:193/255.0 alpha:1.0];
}else{
self.navigationItem.rightBarButtonItem.tintColor = [UIColor redColor];
}
if (self.titleView.text.length == 0) {
self.navigationItem.rightBarButtonItem.tintColor = [UIColor colorWithRed:193/255.5 green:193/255.0 blue:193/255.0 alpha:1.0];
}else{
self.navigationItem.rightBarButtonItem.tintColor = [UIColor redColor];
}
NSLog(@"Typing has stopped");
}
答案 0 :(得分:4)
使用if (self.textView.text.length == 0)
而不是检查文本是否为空。
答案 1 :(得分:1)
对于Swift 3:
if (self.textView.text.characters.count == 0)
答案 2 :(得分:-1)
您可以将按钮图像绑定到文本视图值,然后使用值转换器根据是否有输入放入不同颜色的图像。
代码适用于OSX,但希望它具有适应性。
@implementation DBHasTextImageTransformer
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
+ (Class)transformedValueClass
{
return [NSImage class];
}
+ (BOOL)allowsReverseTransformation
{
return NO;
}
- (id)transformedValue:(id)value
{
if ((value == NULL) || [value isEqualToString:@""]) {
return [NSImage imageNamed: @"NoTextImage"];
} else {
return [NSImage imageNamed: @"HasTextImage"];
}
}
@end