環境
OS X Yosemite10.10
Xcode6.1.1
#アプリ説明
・テキストに文字を入力すると、その文字を読み上げてくれるアプリ
・テキストを消すための☓印がついている
・テキスト入力の後returnキーを押すか、ボタンを押すとキーボードを非表示にできる
実際の動きはこんな感じ。
http://youtu.be/1j28rl-YThg
#ソースコード
//1.ボタン、テキストフィールドを設置→viewcontroller.swiftに接続
import UIKit
import AVFoundation //2.フレームワークをインポート
//5.
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textArea: UITextField! //1.
var speak:AVSpeechSynthesizer = AVSpeechSynthesizer() //3.変数speakを作る
override func viewDidLoad() {
super.viewDidLoad()
//5.キーボードを表示させる
textArea.delegate = self
textArea.clearButtonMode = UITextFieldViewMode.Always
textArea.keyboardType = UIKeyboardType.Default
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func speakBtn(sender: UIButton) { //1.
//4.ボタンが押されたら音声を読み上げ
let content = AVSpeechUtterance(string: self.textArea.text)
content.voice = AVSpeechSynthesisVoice(language: "ja-JP")
self.speak.speakUtterance(content)
textFieldShouldReturn(textArea) //6.
}
//6.returnキーを押したらキーボードが消えるようにする
func textFieldShouldReturn(textField: UITextField) -> Bool {
textArea.resignFirstResponder()
return true
}
}
書き加えた順番に番号をふってあります。
#作る過程のエラー
###iOS8.1ではコードが正しくても音が出ない
Xcodeをインストールした状態だと、渡しの場合iOS SDK 8.01しか入っておらず、それでは音声機能が使えなかった。
http://stackoverflow.com/questions/24472766/avspeechutterance-swift-initializing-with-a-phrase
###シミュレーターをiOS7.0で動かす
機能を使えるのはiOS7.0とわかったが、シミュレーターをiOSにするのも一調べ。
http://wayohoo.com/mac/apps/developer-tools/if-there-is-no-ios-simulator-in-xcode-6-1-workaround.html
###シミュレーターのキーボードが表示されない
音はなるようになったけれど、キーボードが出てこず、ここでもハマった。
http://yutaihara.com/archives/147
ちょっとずつですが、Swiftの書き方やXcodeの使い方に慣れてきてプログラミングが楽しくなってきました〜。