我有一个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并且当用户键入所有文本为绿色时。 - 没有工作
注意:我将我的代码放入了事件"编辑开始"正如我所知,当用户去更新字段时,它应该清除文本并允许他们输入绿色字体颜色。
答案 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]];
}