的UITextField输入不工作

的UITextField输入不工作

问题描述:

我做在Xcode的应用程序,其中一个屏幕出现要求你乘2号,然后你把产品在文本字段如果答案是正确的将有一个按钮是灰色的会变成蓝色。的UITextField输入不工作

问题是,即使我在测试应用程序时肯定会回答,它不会工作,按钮将保持灰色,应用程序会认为答案是错误的,请任何人帮助我,告诉我的代码有什么问题!

var firstNumber = arc4random() 
    var secondNumber = arc4random() 
    @IBOutlet weak var AnswerButton: UIButton! 
    @IBOutlet weak var OutcomeNumber: UILabel! 
    @IBOutlet weak var textField: UITextField! 


    @IBAction func textFieldEditingDidChange(_ sender: Any) { 
     print("textField: \(textField.text)") 
     if ValidatePassword(text: textField.text!) { 
      AnswerButton.isEnabled = true 
     } else { 
      AnswerButton.isEnabled = false 
     } 
    } 

    @IBAction func AnswerButtonPressed(_ sender: Any) { 
     print("you may enter") 

     view.backgroundColor = UIColor.green 
    } 

    func ValidatePassword(text: String) -> Bool { 
     var result = false 
     if text == ("(\(firstNumber*secondNumber))") { 
      result = true 
     } 
     return result 

    } 

    @IBAction func GObutton(_ sender: Any) { 
     OutcomeNumber.text = "\(firstNumber)×\(secondNumber)" 
     firstNumber = arc4random_uniform(10) 
     secondNumber = arc4random_uniform(10) 
    } 

    @IBAction func GoMedium(_ sender: Any) { 
     OutcomeNumber.text = "\(firstNumber)×\(secondNumber)" 
     firstNumber = arc4random_uniform(50) 
     secondNumber = arc4random_uniform(50) 
    } 

    @IBAction func GoHard(_ sender: Any) { 
     OutcomeNumber.text = "\(firstNumber)×\(secondNumber)" 
     firstNumber = arc4random_uniform(100) 
     secondNumber = arc4random_uniform(100) 
    } 


     override func viewDidLoad() { 
     super.viewDidLoad() 
     AnswerButton.isEnabled = false 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

也许问题是这一部分:

func ValidatePassword(text: String) -> Bool { 
    var result = false 
    if text == "(\(firstNumber) * \(secondNumber))" { 
     result = true 
    } 
    return result 

} 

之间*\(secondNumber)有两个空格。当您与文本(1 * 3)试试这个函数返回false(1 * 3)回报true

在另一方面,最好用Regular Expressions评估这个。

结果在Playground enter image description here

+0

我试图消除空间,但什么都没有改变,我该如何使用正则表达式,对不起进出口新的Xcode的,如果你能联系我的文章或教程或只是告诉我,在这里我会非常感激 –

+0

我在操场上添加了一个例子,并且完美运作。要了解有关'正Expressions'您可以使用此https://regexone.com – mhergon

Mhergon是正确的。问题是你的函数验证答案。您的代码结构以及您计算和接受答案的方式并不正确。但看起来不错,首发。无论如何,看看你的代码ValidatePassword

尝试在Xcode的操场你的代码。

看看这个例子从您的代码所,只是不同的变量:现在

print("(\(x*y))") 

它:

let x = 3 
let y = 4 

print("(\(x) * \(y))") 

,打印"(3 * 4)"

现在,打印更改这个打印正确的计算和答案是。

编辑

你回答错误的问题。在将它们打印出来给用户之前生成随机数字。

您可以检查此示例中,我做。检查更短的代码。 :)

https://github.com/glennposadas/TextFieldGame-iOS

+0

我也尝试过的代码更改为你建议仍然没有什么区别,你觉得有可能是别的我可以尝试改变? –

+0

快速提示,你知道如何调试?在你的'textFieldDidChange'的'if-else'和你的'ValidatePassword'的'if'中放置一些*断点*。然后打印它们的值,比如'po textField.text!'。通过这种方式,您可以轻松地逐个检查变量的值,以及它们如何变化。 – Glenn

+0

我真的很困惑,有人可以测试代码,看看有什么需要改变,使文本字段可以接受变量,它的作品第一次,但之后,我不。 –