1

我有一个 UITextField ,其中我限制输入超过 2 位数字。现在,它工作正常,但是当我点击文本字段并选择所有内容然后键入它不允许我覆盖现有的 2 位数字。

关于如何在这里使用“selectedTextRange”属性的任何线索?

- (BOOL)cell:(RunnerTableViewCell *)iCell shouldChangeCharactersInRange:(NSRange)iRange replacementString:(NSString *)iString {
    self.navigationItem.rightBarButtonItem.enabled = YES;
    NSCharacterSet *anUnacceptedInput = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    int aCharacterUpperLimit = 2;
    BOOL aReturnValue = YES;

    NSInteger aTotalLength = iCell.inputField.text.length + [iString length];
    NSLog(@"iString=%@ aTotalLength=%d",iString,aTotalLength);
    if ([[iString componentsSeparatedByCharactersInSet:anUnacceptedInput] count] > 1 || (aTotalLength > aCharacterUpperLimit && ![iString isEqualToString:kRunnerEmptyString]) || [iString length] > aCharacterUpperLimit) {
        aReturnValue = NO;
    }
    return aReturnValue;
}
4

1 回答 1

3

试试这个:

NSInteger aTotalLength = iCell.inputField.text.length + [iString length] - iRange.length;
于 2012-05-08T23:17:23.503 回答