我想知道是否可以根据用户输入的字符限制UITextField
显示的内容为他们正在输入。例如,我想排除角色"!"从UITextField
中显示出来,所以当用户输入" Nice!"时,她在文本字段中看到的只是" Nice",旁边的闪光灯& #34; 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;
}
答案 0 :(得分:1)
好的,你能不能试试这个版本,看看它是否处理了带有无效字符的字符串的额外粘贴?
-(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;
}
答案 1 :(得分:1)
这个怎么样?
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *previousString_ = textField.text;
NSString *upperCased_ = [string uppercaseString];
previousString_ = [previousString_ stringByReplacingCharactersInRange:range withString:upperCased_];
[textField setText:previousString_];
return NO;
}
此代码会将较低的输入字符串更改为较高的字符串