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

时间:2014-03-10 18:27:12

标签: ios nsstring uitextfield uikeyboard

我想禁用“。”检测到用户已经在文本字段中输入了一个小数点后,键盘上的键。

因此启用密钥,直到在文本字段中检测到一个小数。

这样做的最佳方式是什么?

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

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

    if([string isEqualToString:@"."]) {
        decimalCount++;
    }

    if(decimalCount > 1) {

        [string stringByReplacingOccurrencesOfString:@"." withString:@""];

    }

    return YES;
}

然而,它并没有取代“。”十进制计数大于1时带“”。我缺少什么,以便用户仍然可以输入新的数字而不是小数点?

2 个答案:

答案 0 :(得分:4)

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

无论如何都需要这样做,因为用户可能正在使用外部键盘或尝试将文本粘贴到文本字段中。

答案 1 :(得分:1)

很抱歉,如果我之前的回答误导你。逻辑错误。这似乎对我有用。

-(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;
}

希望它有所帮助。