我想知道是否可以根据用户输入的字符限制 UITextField
显示的内容,他们正在输入。例如,我想排除字符“!”不会显示在 UITextField
中,因此当用户输入“Nice!”时,她在文本字段中看到的只是“Nice”,并且在“e”旁边有一个指示灯。
我曾尝试使用 shoudChangeCharactersInRange
并尝试了一些基本的操作,例如将所有输入的单词都变成小写,但没有成功。解决这个问题的最佳方法是什么,特别是如果我想完全保留一些字母或字符?谢谢
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
[self updateTextLabelsWithText: newString.lowercaseString];
return YES;
}
最佳答案
更新的答案
好的,你能试试这个版本吗,看看它是否处理了额外粘贴带有无效字符的字符串?
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
BOOL shouldReplace = YES;
NSRange invalidCharRange = [string rangeOfString:@"!"];
if(invalidCharRange.length > 0)
{
shouldReplace = NO;
NSString *cleanedString = [string stringByReplacingOccurrencesOfString:@"!" withString:@""];
NSString *completeString = [[NSString alloc] initWithFormat:@"%@%@", textField.text, cleanedString];
textField.text = completeString;
}
else
{
textField.text = [textField.text stringByReplacingOccurrencesOfString:@"!" withString:@""];
}
if([string isEqualToString:@"!"])
{
shouldReplace = NO;
}
return shouldReplace;
}
原始答案
如果替换字符串是“!”,只需设置 NO:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
BOOL shouldReplace = YES;
if([string isEqualToString:@"!"])
{
shouldReplace = NO;
}
return shouldReplace;
}
关于ios - 根据输入的字符限制 UITextField 在用户输入时显示的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24544654/