我正在 Xcode 中制作一个应用程序,其中出现一个屏幕,要求您将 2 个数字相乘,然后您将乘积放在文本字段中,如果答案正确,灰色按钮将变为蓝色。
问题是即使我在测试应用程序时确定我的答案它也不会工作它不会工作,按钮将保持灰色并且应用程序会认为答案是错误的,请任何人帮助我并告诉我我的代码有什么问题!
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
另一方面,最好使用正则表达式
来评估它。
关于ios - UITextField 输入不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42179432/