2016-06-19 3 views
0

그러면 올바른 대답 만 쓰면 다음 질문 버튼 만 허용하는 방법은 무엇입니까? 나는 스위프트를 사용하고있다! 아래는 제 코드입니다. 어떤 도움이라도 대단히 감사하겠습니다! 감사!옳은 답이 쓰여졌을 때 정확한 퀴즈 쇼에 대한 대답 라벨을 만들려면 어떻게해야합니까?

이 내 코드와 수입 UIKit

class InputViewController1: UIViewController, UITextFieldDelegate { 

@IBOutlet var questionLabel: UILabel! 

@IBOutlet var correctAnswerLabel: UILabel! 

@IBOutlet var inputTextField: UITextField! 

var enteredAnswer: String? 

var correctAnswer = "Correct Answer = Small" 

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() 
} 

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

func titlesForLabels() { 
    questionLabel.text = "What is the size of the lesion(s)?" 
    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() 
    } else { 
     print("Wrong Answer") 
     correctAnswerLabel.textColor = UIColor.redColor() 

    } 
    correctAnswerLabel.hidden = false 
} 

}에서

+0

'correctAnswer'를 "Answer Answer = Small"으로 설정 한 다음이 값을'textField'에 입력 한 답변과 비교 한 것 같습니다. 따라서 사용자가 "Correct Answer = Small"을 입력하지 않으면 테스트가 항상 실패합니다. 사용자가 "Small", "Small"또는 "SMALL"을 입력하는 것을 의미합니까? 그렇다면'correctAnswer'를'Small '로 변경하면됩니다 :'var correctAnswer = "Small". – Ike10

+0

@ Ike10 죄송합니다. 감사합니다. – Babz

+0

사용자가 정답 (예 : 소액)을 얻은 경우에만 버튼 (예 : 다음 질문과 같은)을 표시하려는 경우 코드를 구현하는 것이 무엇인지 알고 있습니까? 나는 Swift를 처음 사용합니다. – Babz

답변

0

는 질문을하기 전에 매우 신중하게이 코드를 공부하십시오. UIControlEvents.EditingChanged (.EditingChanged)에 addTarget 방법을 사용하면 inputTextField의 실시간 현재 값으로 InputViewController의 속성을 변경할 수 있습니다. 이것은 textDidChange 기능에서 수행됩니다. 또한 nexButton.alpha0.0viewDidLoad으로 설정되고 그에 따라 textDidChangecheckForCorrectAnswer에서 변경됩니다.

class InputViewController1: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var questionLabel: UILabel! 

    @IBOutlet weak var correctAnswerLabel: UILabel! 

    @IBOutlet weak var inputTextField: UITextField! 

    @IBOutlet weak var nextButton: UIButton! 

    @IBAction func nextButtonPressed(sender: UIButton) { 


    } 

    var enteredAnswer: String? 

    var correctAnswer = "Small" 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    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.addTarget(self, action: #selector(InputViewController1.textDidChange(_:)), forControlEvents: .EditingChanged) 

    inputTextField.delegate = self 

    nextButton.alpha = 0.0 

    titlesForLabels() 
    } 

    func titlesForLabels() { 
    questionLabel.text = "What is the size of the lesion(s)?" 
    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: { 
     self.view.frame.origin.y = -keyboardFrame.size.height 
    }) 
    } 

    func keyboardWillHide() { 
    UIView.animateWithDuration(0.1, animations: { 
     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 { 
     correctAnswerLabel.textColor = UIColor.greenColor() 
     UIView.animateWithDuration(0.5, animations: { 
     self.nextButton.alpha = 1.0 
     }, completion: nil) 
     correctAnswerLabel.text = "Correct!" 
    } else { 
     print("Wrong Answer") 
     correctAnswerLabel.textColor = UIColor.redColor() 
     correctAnswerLabel.text = "Incorrect!" 
    } 
    correctAnswerLabel.hidden = false 
    } 

    func textDidChange(sender: UITextField) { 
    enteredAnswer = inputTextField.text 
    correctAnswerLabel.textColor = UIColor.redColor() 
    correctAnswerLabel.text = "Incorrect!" 
    if enteredAnswer!.lowercaseString != correctAnswer.lowercaseString { 
     UIView.animateWithDuration(0.5, animations: { 
     self.nextButton.alpha = 0.0 
     }, completion: nil) 
    } 
    } 

} 
+0

안녕하세요, 내가 제안한 것을 할 때 UIView에 아무런 멤버가 없다는 빨간색 오류가 나타났습니다 – Babz

+0

신속한 2.3으로 작업하고 있습니까? @Babz – Ike10

+0

또한 단어가 정확하고 부정확하게 대답하는 대신 대답 레이블에 나타나게하는 방법이 있습니까? 예를 들어 답이 작고 사용자가 중간을 넣으면 답안 라벨이 틀립니다! 그런 다음 올바른 답이 쓰여지는 경우 (Small)에만 다음 질문에 단추가 표시됩니다 – Babz

관련 문제