如何限制 Swift 中 2 个文本字段中的数字?

How to limit the numbers in 2 text fields in Swift?

我想将文本字段中的用户选项限制为仅键入小于 59 的数字。

我得到了一个仅适用于 1 个文本字段的代码:

func textField(textField: UITextField,
    shouldChangeCharactersInRange range: NSRange,
    replacementString string: String) -> Bool
{
    var startString = ""
    if (minutesTF.text != nil)
    {
        startString += minutesTF.text!
    }
    startString += string
    var limitNumber = startString.toInt()
    if limitNumber > 59
    {
        return false
    }
    else
    {
        return true
    }
}

但是我的 2 个文本字段代码无法正常工作:

func textField(textField: UITextField,
    shouldChangeCharactersInRange range: NSRange,
    replacementString string: String) -> Bool
{
    var startString = ""
    if (minutesTF.text != nil)
    {
        startString += minutesTF.text!
    }
    startString += string
    var limitNumber = startString.toInt()
    if limitNumber > 59
    {
        return false
    }
    else
    {
        return true
    }
}
func textField2(textField: UITextField,
    shouldChangeCharactersInRange range: NSRange,
    replacementString string: String) -> Bool
{
    var startString = ""
    if (secondsTF.text != nil)
    {
        startString += secondsTF.text!
    }
    startString += string
    var limitNumber = startString.toInt()
    if limitNumber > 59
    {
        return false
    }
    else
    {
        return true
    }
}

shouldChangeCharactersInRange 方法只能有一个实现。所以你的第二个(在方法中使用 textField2 名称)永远不会被调用。删除你的 textField2:shouldChangeCharactersInRange:replacementString: 方法。

请注意,文本字段作为参数传递。在您的实现中使用该文本字段参数而不是对文本字段 ivar 进行硬编码。

换句话说,将 minutesTF 的使用替换为 textField

func textField(textField: UITextField,
    shouldChangeCharactersInRange range: NSRange,
    replacementString string: String) -> Bool
{
    var startString = ""
    if (textField.text != nil)
    {
        startString += textField.text!
    }
    startString += string
    var limitNumber = startString.toInt()
    if limitNumber > 59
    {
        return false
    }
    else
    {
        return true
    }
}