使用shouldChangeCharactersInRange来限制输入的字符,但无法检测返回

时间:2011-11-23 23:17:37

标签: ios ios5

我在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按钮?

1 个答案:

答案 0 :(得分:8)

原来:

返回由string @"\n"

表示

删除由string @""表示(range的长度决定删除了多少)。