1

2桁以上の入力を制限しているUITextFieldがあります。今は問題なく動作しますが、テキスト フィールドをタップしてすべてのコンテンツを選択して入力すると、既存の 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 に答える