占位符检查在某些情况下有效,有些则不在

时间:2016-07-04 18:26:51

标签: ios iphone xcode swift

我正在制作一些应用程序(图灵机模拟器),我的FirstViewControler中有很少的文本字段。我已经让它成为那些textFields的委托,我通过检查它们的占位符文本来区分它们,你可以从代码中看到。没关系,并使用那些底部文本域(见图像)将功能输入到tableview中,但是当我在顶部添加SegmentedView和TextField时,我想立即更新分段视图作为字段中输入的人,它不知何故不识别该textField的占位符(“0”添加了jut来测试它,它是“在这里输入数字”)。

简而言之,那些前5个ifs正在工作并正在完成他们的工作,但最后一个if ==“0”。检查 - 不起作用,我无法弄清楚原因。

This is my storyboard and document outline

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    if string.characters.count > 0 {

                    // za prvi: 0..9
        if textField.placeholder == "0..9" {

            switch string {
            case "0": return true
            case "1": return true
            case "2": return true
            case "3": return true
            case "4": return true
            case "5": return true
            case "6": return true
            case "7": return true
            case "8": return true
            case "9": return true
            default: return false
            }
        }
        // za drugi
        else if textField.placeholder == "0/1/b" {

            switch string {
            case "0": return true
            case "1": return true
            case "b": return true
            default: return false
            }
        }
        // za treci
        else if textField.placeholder == "0..9/+/-" {

            switch string {
            case "0": return true
            case "1": return true
            case "2": return true
            case "3": return true
            case "4": return true
            case "5": return true
            case "6": return true
            case "7": return true
            case "8": return true
            case "9": return true
            case "+": return true
            case "-": return true
            default: return false
            }
        }
        // za cetvrti
        else if textField.placeholder == "0/1/b " {

            switch string {
            case "0": return true
            case "1": return true
            case "b": return true
            default: return false
            }
        }
        // za peti
        else if textField.placeholder == "+/-" {

            switch string {
            case "+": return true
            case "-": return true
            default: return false
            }
        }
        else if textField.placeholder == "0." {
            if ((string == "0") || (string == "1")) {
                traka.append(Character(string))
                osveziTraku()
                return true
            }
            else {
                return false
            }
        }
        else {
            return true
        }

    }
    else {
        return true
    }
}

1 个答案:

答案 0 :(得分:0)

我在代码中看不到任何问题,我只是重构了一下,它可能会解决你的问题。

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    if string.characters.count > 0 {

        switch textField.placeholder
        {
        case "0..9", "0..9/+/-", "+/-", "0/1/b" :

            switch string {
            case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",  "+", "-", "b": return true
            default: return false
            }
        case "0." :

            switch string {
            case "0", "1":
                traka.append(Character(string))
                osveziTraku()
                return true
            default: return false
            }
        default : return false
        }
    }
    else
    {
        return false
    }
}