有没有办法永久性地将字母添加到用户无法删除的UITextField?我想添加一个字符而用户无法删除它,但他们仍然可以添加字母。
干杯,
P.S。这适用于iOS
答案 0 :(得分:5)
一个UITextField
有一个委托方法调用应该更改范围内的字符,这个方法基本上问,我应该添加还是删除下一个字符?从中你可以决定你想要什么。这是一些示例代码。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
BOOL shouldChangeCharacters = ( (textField.text.length + string.length) > 1 );
return shouldChangeCharacters;
}
此代码表示如果添加的新字符加上当前文本大于1,则可以进行更改,如果文本不大于1,则我们不会进行更改...
现在,假设某人可能会尝试粘贴您的角色,仍会调用此委托方法,但您必须做一些事情。
if (range.location == 0) {
NSString* firstCharacter = [string substringToIndex:1];
BOOL firstCharacterIsDesiredCharacter = [firstCharacter isEqualToString:@"#"];
if ( !firstCharacterIsDesiredCharacter ) {
NSString* symbolWithText = [NSString stringWithFormat:@"#%@",text];
// ******************** \\
[textView setText:symbolWithText];
return NO;
// or we could do this
string = symbolWithText;
// ******************** \\
}
}
两种情况都在修改参数的值......有些人不喜欢这样做。这可能是一个糟糕的编程习惯..或者如果你要修改它们,你应该先做一些过程。
有了这个,我们只需要运行这个代码,如果他们试图替换第一个字符,我替换哈希标记符号,第一个字符来自位置0和长度1的范围。所以如果范围是等于0,然后我们运行我们的代码来修复它。此代码还考虑到它们可能会粘贴特殊符号。所以,如果UITextField
读了#work,他们试图复制" work"或" #work"如果哈希标记是第一个字符,则需要考虑这两种情况并完全跳过代码。
答案 1 :(得分:0)
试试这个
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
label.text = @"left";
label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
textField.leftViewMode = UITextFieldViewModeAlways;
textField.leftView = label;
答案 2 :(得分:0)
尝试使用:
你的.h:中的
IBOutlet UITextFeild *textFeild;
你的.m中的:
- (BOOL)textFieldShouldReturn:(UITextField *)textFeild {
NSString *textFeildText = textFeild.text;
textFeild.text = [NSString stringWithFormat:@"string you want to always add %@",textFeildText];
return NO;
}
当用户正在编辑文本框时,这并不总是会显示,但是一旦它们点击返回,它将自动添加到文本框中。如果您使用此代码,我建议您默认情况下在文本字段中没有所需的字符串,否则您可能会得到以下内容:
String you want to add String you want to add Hello World!
如果你只是使用我给你的代码,并且不要将你想要的字符串默认放在字段中,那么你很高兴!如果你想点击返回后键盘自动消失,只需在'return NO'语句上面的textFeildShouldReturn方法中添加它:
[textFeild resignFirstResponder];