gpt4 book ai didi

ios - 当用户开始输入时清除 UITextField

转载 作者:可可西里 更新时间:2023-11-01 03:52:33 25 4
gpt4 key购买 nike

简短版:如何让 UITextField 框在用户第一次按键时删除所有内容?在用户开始输入内容之前,我不希望删除信息。即,在开始编辑时清除它是不够的。

长版:我有三个循环的 UITextField(使用返回键并在“shouldReturn”方法中捕捉按下。UITextField 中已经有文本,如果用户没有t 键入任何内容并转到下一个 UITextField,该值应该保留(默认行为)。

但我希望如果用户开始输入,它会先自动清除文本。突出显示整个字段,然后键入任何内容会删除字段,然后添加用户按键。

“编辑开始时清除”是不好的,因为文本会在光标出现在字段中时立即被清除。这不是我们想要的。我想我可以在这里使用占位符,但默认情况下它不起作用,而且我找不到默认值属性。 Highlighted 和 Selected 属性在这方面也不做任何事情。

最佳答案

有一个委托(delegate)方法叫做

textFieldDidBeginEditing:(UITextField*) tf{
tf.startedEdinting = YES;
}

textFeildDidEndEditing: (UITextField*) tf {
tf.startedEditing = NO;
}

将类别中的 startEditing 添加到 UITextField。

然后如果值改变清除字段:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.startEditing){
textField.text = string;
} else {
textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
}
}

您可以通过以下方式将属性添加到 UITextField 类别:

.h

@property (nonatomic, assign) BOOL startEditing;

.m

@dynamic startEditing;

- (void) setStartEditing:(BOOL)startEditing_in{
NSNumber* num = [NSNumber numberWithBool:startEditing_in];
objc_setAssociatedObject(self, myConstant, num, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (BOOL) startEditing{
NSNumber* num = objc_getAssociatedObject(self, myConstant);
return [num boolValue];
}

关于ios - 当用户开始输入时清除 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13417496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com