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

时间:2015-04-12 17:54:08

标签: ios swift uitextfield

我想限制文本字段中的用户选项,只键入小于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
    }
}

1 个答案:

答案 0 :(得分:0)

您只能拥有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
    }
}