![](/img/trans.png)
[英]Swift - how do I allow the textfield to still recognize spaces after the correct answer inputed as still the correct answer
[英]Swift - how do I make the textfield recognize more than one correct answer in quiz?
我正在做一个测验,这个问题有多个正确答案。 例如,在下面的代码中,正确的答案是“粉红色”的问题是“病变的颜色是什么”。 但我也希望它能够识别出红色也将被视为正确答案。 有没有办法为一个问题编码多个正确答案? 任何帮助将不胜感激。 谢谢!
import Foundation
import UIKit
class Case1Q2ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var imageButton: UIButton!
@IBOutlet weak var nextButton: UIButton!
@IBOutlet var questionLabel: UILabel!
@IBOutlet var correctAnswerLabel: UILabel!
@IBOutlet var inputTextField: UITextField!
var enteredAnswer: String?
var correctAnswers = ["Pink", "Red"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Case1Q2ViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Case1Q2ViewController.keyboardWillHide), name: UIKeyboardWillHideNotification, object: nil)
inputTextField.delegate = self
titlesForLabels()
nextButton.enabled = false
imageButton.layer.cornerRadius = 2;
imageButton.layer.borderWidth = 2;
imageButton.layer.borderColor = UIColor.blackColor().CGColor
questionLabel.layer.cornerRadius = 2;
questionLabel.layer.borderWidth = 2;
questionLabel.layer.borderColor = UIColor.blackColor().CGColor
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func titlesForLabels() {
questionLabel.text = "What is the colour of the lesion(s)?"
correctAnswerLabel.text = correctAnswers.joinWithSeparator(", ")
correctAnswerLabel.hidden = true
inputTextField.text = nil
inputTextField.enabled = true
}
func keyboardWillShow(notification: NSNotification) {
let userInfo = notification.userInfo!
let keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
UIView.animateWithDuration(0.1, animations: { () -> Void in
self.view.frame.origin.y = -keyboardFrame.size.height
})
}
func keyboardWillHide() {
UIView.animateWithDuration(0.1, animations: { () -> Void in
self.view.frame.origin.y = 0
})
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
enteredAnswer = textField.text
checkForCorrectAnswer()
return true
}
func checkForCorrectAnswer() {
let answer = enteredAnswer!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
if correctAnswers.contains(answer.lowercaseString) {
print("Correct")
correctAnswerLabel.textColor = UIColor.greenColor()
correctAnswerLabel.text = "Correct!"
nextButton.enabled = true
} else {
print("Wrong Answer")
correctAnswerLabel.textColor = UIColor.redColor()
correctAnswerLabel.text = "Incorrect! Please try again"
nextButton.enabled = false
}
correctAnswerLabel.hidden = false
}
override func viewWillAppear(animated: Bool) {
navigationItem.title = "Case 1: Q2"
}
}
您可以使用var correctAnswers = ["pink", "red"]
替换var correctAnswer = "Pink"
行来保留正确答案的数组
然后,在您的checkForCorrectAnswer()
方法中,您必须检查正确答案数组是否包含输入的答案:
func checkForCorrectAnswer() {
let answer = enteredAnswer!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
if correctAnswers.contains(answer.lowercaseString) {
// Correct
} else {
// Incorrect
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.