【问题标题】:Cant Turn A TextField String To An Int In textFieldShouldReturn无法在 textFieldShouldReturn 中将 TextField 字符串转换为 Int
【发布时间】:2020-11-23 19:09:05
【问题描述】:

当我输入一个值时,我尝试使用 textFieldShouldReturn 来让我的文本字段控制图像的宽度,但是当我尝试将我的 textField 中的文本转换为 Int 时,它在我的控制台中显示为 nil。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    let text = textField.text
    let numText = Int(textField.text!)
    if widthPer.text == text {
        print(text!)
        print(widthPer.text!)
        print(numText!) //returns nil
        squareOneWidth.constant = CGFloat(numText!) * 2
        slider.value = Float(numText!)
        calPercentage()
        calPercentageTwo()
    } 
    return true
}

我也只允许用户输入 10 到 90 之间的数字。我认为这可能与我允许这样做的功能有关。我该如何解决这个问题?

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
    let num = Double(textField.text!)

    if num! < 10 {
            textField.text = "10%"
    } else if num! > 90 {
            textField.text = "90%"
    } else if num! >= 10 || num! <= 90 {
            textField.text = String(Int(num!)) + "%"
    }
    //print(num!)
    return true
}

【问题讨论】:

    标签: swift xcode textfield


    【解决方案1】:

    这是因为当您尝试将 textField 转换为 Int 时,您已经将其值更新为“%”,因此它返回 nil,因为“31%”不是数字。

    我建议将原始数字的值存储在 var 中,以便在需要时可以调用它

    var originalNumber = 0
    
    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
    let num = Double(textField.text!)
    originalNumber = Int(textField.text)
    
    if num! < 10 {
            textField.text = "10%"
    } else if num! > 90 {
            textField.text = "90%"
    } else if num! >= 10 || num! <= 90 {
            textField.text = String(Int(num!)) + "%"
    }
    //print(num!)
    return true
    }
    
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    let text = textField.text
    let numText = originalNumber
    if widthPer.text == text {
        print(text!)
        print(widthPer.text!)
        print(numText!) //returns nil
        squareOneWidth.constant = CGFloat(numText!) * 2
        slider.value = Float(numText!)
        calPercentage()
        calPercentageTwo()
    } 
    return true
    }
    

    【讨论】:

    • 我遇到的问题是能够输入大于 90 且小于 10 的数字,但主要问题已解决。
    • 如果超过 90 或低于 10 似乎会影响图像,我该如何否定呢?
    猜你喜欢
    • 2018-05-10
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多