[英]Add a permanent Character to UITextField
有没有一种方法可以将字母永久添加到用户无法删除的UITextField中? 我想添加一个字符,用户无法删除它,但是他们仍然可以在其后添加字母。
干杯,
ps这是针对iOS
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”,则它将两种情况都考虑在内,并且如果哈希标记是第一个字符,则完全跳过该代码。
尝试这个
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;
尝试使用此:
在您的.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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.