更改空uitextfield的字体颜色

时间:2014-07-02 17:32:31

标签: ios uitextfield

我有一个UITextfield,当文本字段等于" test"时,我想清除文本字段并将字体颜色更改为绿色。下面的代码几乎完成了它。

- (void)editingDidBegin:(id)sender {
    UITextField *txtfld = (UITextField*)sender;
    if ([txtfld.text isEqualToString:(@"test")]) {
        txtfld.text = @" ";
        [txtfld setFont:regularFont];
        [txtfld setTextColor:[UIColor greenColor]];
    }
}

唯一的问题是我想改变:

txtfld.text = @" ";

为:

txtfld.text = @"";

当我这样做时,字体颜色仍然是原始的黑色。如果我将其保留为@" ",则字体将变为绿色。有任何想法吗?提前谢谢。

方案: (1)用户在文本字段中不输入任何内容并单击提交按钮 - 工作 (2)提交按钮用单词" test"更新文本字段。并使其变红 - 工作(3)当用户返回文本字段时我希望删除单词test并且当用户键入所有文本为绿色时。 - 没有工作

注意:我将我的代码放入了事件"编辑开始"正如我所知,当用户去更新字段时,它应该清除文本并允许他们输入绿色字体颜色。

2 个答案:

答案 0 :(得分:0)

我刚刚测试了你的代码。它应该工作。你正在其他地方恢复颜色。

您可以使用以下代码在新的单个视图项目中对其进行测试:

#import "ViewController.h"

@interface ViewController () <UITextFieldDelegate>
@property (nonatomic, weak) IBOutlet UITextField *textField;
-(IBAction)checkColor:(UIButton *)sender;
@end

@implementation ViewController

-(void)checkColor:(UIButton *)sender {
    _textField.text = @"check color";
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
    if ([textField.text isEqualToString:@"test"]) {
        textField.text = @"";
        textField.textColor = [UIColor greenColor];
    }
    else {
        textField.textColor = [UIColor darkTextColor];
    }
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}
@end

答案 1 :(得分:0)

有趣的是,当你将文本设置为@“”或nil,并且还在UIControlEventEditingDidBegin事件处理程序中设置textColor时,textColor不会被设置。所以最后一次设置textColor,也见代码中的注释:

- (IBAction)textEditingDidBegin:(id)sender
{
    UITextField *field = (UITextField *)sender;
    if ([field.text isEqualToString:@"test"]) {
        [field setText:@""];
        [self performSelector:@selector(setColor:) withObject:sender afterDelay:0.01];
        [field setFont:[UIFont fontWithName:@"Georgia" size:15]];
    }
}

- (void)setColor:(id)sender
{
    // See this line of code closely, do NOT use sender, use textField property in your view controller class
    [self.textField setTextColor:[UIColor greenColor]];
}