我在UITextField
委托中使用以下代码来限制可以输入的字符:
仅供参考:UITextField
出口名为nameChoiceField
。另外还有一个名为errorMessageLabel
的标签插座。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *potentialNewChosenName = [self.nameChoiceField.text stringByReplacingCharactersInRange:range withString:string];
NSCharacterSet *nonLettersNumbersOrDashes = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890- "] invertedSet];
if ([potentialNewChosenName stringByTrimmingCharactersInSet:nonLettersNumbersOrDashes].length != potentialNewChosenName.length) {
self.errorMessageLabel.text = @"Only letters, numbers etc allowed.";
return NO;
} else {
self.errorMessageLabel.text = @"That's okay.";
return YES;
}
}
哪种方法很好用(只要自动更正关闭,如果你输入一些其他内容以在输入2个空格后停止自动完全停止)。
然而!当您点击键盘上的return
时,它不允许它(显示错误消息“Only letters ....”)。
如何限制用户可以输入的内容,并且仍然可以识别return
按钮?
此外,是否有任何最佳做法可以识别应在上面实施的delete
按钮?
答案 0 :(得分:8)
原来:
返回由string
@"\n"
删除由string
@""
表示(range
的长度决定删除了多少)。