問題と解答の2つのテキストフィールドをつくり、問題テキストフィールドには問題をcvsファイルより移入し、回答テキストフィールドにはマイクを使って問題をインプットさせます。両方のテキストフィールドの内容(テキスト)が合っていればイメージの丸を表示し、合っていなけらばXイメージを表示する画面をつくっています。
下記のコーディングで正誤判定をしようとしたのですが、回答ボタンをタップすると回答が合っていてもXイメージが表示されます。どこのロジックが悪いのでしょうか。下記にコードとスクリーンショットを添付しますので教えてください。
// MondaiViewController.swift // Mondai01 // import UIKit class MondaiViewController: UIViewController, UITextFieldDelegate{ //kentei.csvファイルを格納する配列csvArray @IBOutlet weak var mondaiNumberLabel: UILabel! @IBOutlet weak var mondaiField: UITextField! @IBOutlet weak var kaitouField: UITextField! @IBOutlet weak var judgeImageView: UIImageView! @IBOutlet weak var answerBtn: UIButton! //"OnseiTextsCSV"ファイルを格納する配列csvArray var csvArray:[String] = [] //csvArrayから取り出した問題を格納する配列mondaiArray var mondaiArray:[String] = [] var mondaiCount = 0 //問題をカウントする変数 var correctCount = 0 //正解をカウントする変数 let total = 10 //出題数を管理する変数 override func viewDidLoad() { super.viewDidLoad() //問題番号ラベルの表示 let mondaiNumberLabel = UITextField() // サイズ設定 mondaiNumberLabel.frame.size.width = self.view.frame.width * 1/5 mondaiNumberLabel.frame.size.height = 40 // 位置設定 mondaiNumberLabel.center.x = self.view.center.x mondaiNumberLabel.center.y = 100 // 背景色 mondaiNumberLabel.backgroundColor = UIColor(white: 0.9, alpha: 1) // 画面に追加 self.view.addSubview(mondaiNumberLabel) //問題テキストフィールド表示設定 let mondaiField = UITextField() // サイズ設定 mondaiField.frame.size.width = self.view.frame.width * 2 / 3 mondaiField.frame.size.height = 48 // 位置設定 mondaiField.center.x = self.view.center.x mondaiField.center.y = 140 // 背景色 mondaiField.backgroundColor = UIColor(white: 0.9, alpha: 1) // 画面に追加 self.view.addSubview(mondaiField) let viewController = ViewController() //loadCSVメソッドを使用し、csvArrayに検定問題を格納 csvArray = viewController.loadCSV("OnseiTextsCSV") //シャッフルメソッドを使用し、検定問題を並び替えてcsvArrayに格納 //csvArrayの0行目を取り出し、カンマを区切りとしてmondaiArrayに格納 mondaiArray = csvArray[mondaiCount].components(separatedBy: ",") //変数mondaiCountに1を足して、ラベルに出題数を設定 mondaiNumberLabel.text = "第\(mondaiCount+1)問" //TextViewに問題を設定 mondaiField.text = mondaiArray[0] //回答テキストフィールド表示設定 let kaitouField = UITextField() // サイズ設定 kaitouField.frame.size.width = self.view.frame.width * 2 / 3 kaitouField.frame.size.height = 48 // 位置設定 kaitouField.center.x = self.view.center.x kaitouField.center.y = 340 //テキストビューに自動でキーボード表示 kaitouField.becomeFirstResponder() // Delegate を設定 kaitouField.delegate = self // プレースホルダー kaitouField.placeholder = "下のマイクに触って問題を読む" // 背景色 kaitouField.backgroundColor = UIColor(white: 0.9, alpha: 1) // 画面に追加 self.view.addSubview(kaitouField) kaitouField.resignFirstResponder() } //回答ボタンをタップした時の回答正誤の判定と○X表示 @IBAction func btnAction(_ sender: UIButton) { if mondaiField == kaitouField{ //○を表示 judgeImageView.image = UIImage(named: "maru.png") //正解カウントを増やす correctCount += 1 }else{ //間違っていたら×を表示 judgeImageView.image = UIImage(named: "batsu.png") } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
ご参考事項
開発環境は下記のとおりです。
MacBookPro
OS-X10.12.4 Sierra
Xcode 8.3.2 (8E2002)
参照した本は 世界一受けたい iPhoneアプリ開発の授業 Chapter7-2
四択検定アプリを作ろう
私がやりたいことは
スタートボタンを押して第1問が表示されたら(前回の質問でできました)回答欄に音声認識でテキストをインプットして回答ボタンを押したら正誤判定をして丸かバツを表示するというものです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/29 13:54
2017/06/29 21:26 編集
2017/07/02 05:05