0

UIButton当用户输入 viewController 时,我有一个灰色的。还有一个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");

}
4

3 回答 3

4

使用if (self.textView.text.length == 0)而不是检查文本是否为空。

于 2014-02-02T17:55:46.273 回答
1

对于斯威夫特 3:

if (self.textView.text.characters.count == 0)

于 2016-12-18T07:42:17.930 回答
-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
于 2014-02-02T18:14:43.417 回答