2016-06-19 53 views
0

我正在进行测验,其中存在文本字段并且用户输入答案。但是,我希望它能够识别出正确答案后的空格仍然正确。例如,如果答案是红色,并且用户在红色之后输入一个空格,它仍然被认为是正确的答案。以下是我的代码。请让我知道,并提前感谢您的所有帮助!Swift - 如何让textfield在仍然正确的答案输入正确的答案后仍识别空格

import Foundation 

import UIKit 

class Case1Q3ViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var nextButton: UIButton! 
    @IBOutlet var questionLabel: UILabel! 

    @IBOutlet var correctAnswerLabel: UILabel! 

    @IBOutlet var inputTextField: UITextField! 

    var enteredAnswer: String? 

    var correctAnswer = "Well demarcated" 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(InputViewController1.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil) 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(InputViewController1.keyboardWillHide), name: UIKeyboardWillHideNotification, object: nil) 

     inputTextField.delegate = self 

     titlesForLabels() 
     nextButton.enabled = false 
    } 

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

    func titlesForLabels() { 
     questionLabel.text = "Describe the borders" 
     correctAnswerLabel.text = correctAnswer 
     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() { 
     if enteredAnswer!.lowercaseString == correctAnswer.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 - Q3" 
    } 
} 
+0

@Alex这是如何重复我的其他问题?我的另一个问题是询问如何在选择正确答案后才显示下一个问题按钮。 这个问题是问我怎样才能使测验的文本框部分承认答案,即使在它的末尾添加空格 这些不是同一个问题 – Babz

+0

现在不记得链接背后的意图是什么这是错误的,因为它指出了这个确切的问题。我已经删除了我以前的评论。 – Alex

回答

1

你应该检查面前人人平等修剪空白。您可以使用stringByTrimmingCharactersInSet:方法达到此目的。

func checkForCorrectAnswer() 
{ 
    let answer = enteredAnswer!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 
    if answer.lowercaseString == correctAnswer.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 
} 
+0

谢谢!工作很好! – Babz

+0

@Babz:不客气。快乐编码! –

+0

@Babz如果这解决了你的问题,那么你应该点击复选标记来接受答案。 –

-1

你可以使用这样的事情:

let str = "Hi How Are You" 
let newString = str.stringByReplacingOccurrencesOfString(" ", withString: "") 
print(newString) //This prints "HiHowAreYou" 

然后,只需比较一下两者的用户不带空格回答正确的答案。在你的情况,你会使用这样的:

if enteredAnswer.stringByReplacingOccurrencesOfString(" ", withString: "").lowercaseString == correctAnswer.stringByReplacingOccurrencesOfString(" ", withString: "").lowercaseString { 
//Answer Is Correct 

}

+0

我对编码和swift有点新。我不是在抱歉。所以在我提供的代码中,问题的正确答案是“斑块”。我如何让它认识到“斑块”也是正确的(即斑块后有空间)。如果你可以编辑我的代码来告诉我这一点,将不胜感激 – Babz

+0

问:“什么是正确的spellig:'文件名'或'文件名'?”怎么能给出错误的答案? –