2015-04-12 71 views
0

我想要限制用户在文本域选项,键入只有数字小于59如何限制Swift中2个文本字段中的数字?

Iv'e得到了完美只有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 
    } 
} 

回答

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 
    } 
} 
+0

太棒了!它完美的工作! – Eliko

+0

请注意,您的逻辑是做错检查。您的代码假定用户只是简单地键入,并且光标始终位于当前文本的末尾。如果用户将光标放在别处或用户选择了一些文本,然后输入(或粘贴)更多文本,则逻辑将失败。 – rmaddy

+0

是的,我通过你的代码修复了它。如果我得到第三个文本字段,并且我希望他限制在61以下,并且第一个文本字段在60以下,那该怎么办? – Eliko

相关问题