如何设置“如果文本视图中有文本”

时间:2014-02-02 17:54:10

标签: ios objective-c uitextview uitextviewdelegate

当用户输入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");

}

3 个答案:

答案 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