如何在iOS键盘上禁用小数键



我想禁用"。在检测到用户已经以一个小数点输入到文本字段的一个小数点后,键在数字板上。

因此,启用键,直到在文本场中检测到一个小数为止。

这样做的最好方法是什么?

编辑:我已经实现了以下方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if([string isEqualToString:@"."]) {
        decimalCount++;
    }
    if(decimalCount > 1) {
        [string stringByReplacingOccurrencesOfString:@"." withString:@""];
    }
    return YES;
}

但是,它没有替换"。使用"十进制计数大于1时。我缺少什么,以便用户仍然可以输入新数字,但不能输入小数点?

您无法禁用密钥。实施shouldtextField:shouldChangeCharactersInRange:replacementString:委托方法来执行您需要的任何过滤。

无论如何都需要完成此操作,因为用户可以使用外部键盘或尝试将文本粘贴到文本字段中。

对不起,如果我之前的答案误导了您。逻辑是不正确的。这似乎现在对我有用。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    BOOL result = YES;
    NSString *targetString = @".";
    if([textField.text rangeOfString:targetString].location != NSNotFound) {
        if([string isEqualToString:targetString]) {
            result = NO;
        }
    }
    return result;
}

希望它有帮助。