【问题标题】:How can I disable the decimal key on iOS keyboard如何禁用 iOS 键盘上的小数点键
【发布时间】:2014-03-10 18:27:11
【问题描述】:

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

因此,在文本字段中检测到一位小数之前,该键一直处于启用状态。

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

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

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

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

    if(decimalCount > 1) {

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

    }

    return YES;
}

但是,它并没有取代“。”当小数大于 1 时使用“”。我缺少什么以便用户仍然可以输入新数字但不能输入小数点??

【问题讨论】:

    标签: ios nsstring uitextfield uikeyboard


    【解决方案1】:

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

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

    【讨论】:

    • 我已经有了如何实现它的基本想法,但仍然缺少一些部分。非常感谢!
    【解决方案2】:

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

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      相关资源
      最近更新 更多