質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

944閲覧

ボタンが押せない。(xcode)

isekiryu

総合スコア15

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/09/19 08:40

前提・実現したいこと

2020年の9月17日のアップデート後に音声録音アプリをビルドしてみたところ、ボタンが押せなくなりました。
以前は、録音と保存ができました。
シュミレーターでは、アイフォーン11では、押せましたが、iPhone8では、押せません。
ご教授していただければ幸いです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

swift

1 2 3 4 5 6 7import UIKit 8import AVFoundation 9 10 class ViewController: UIViewController, AVAudioRecorderDelegate, UITableViewDelegate, UITableViewDataSource { 11 12 var recordingSession:AVAudioSession! 13 var audioRecorder:AVAudioRecorder! 14 //録音したものを聴けるようにする。 15 var audioPlayer:AVAudioPlayer! 16 var numberOfRecords:Int = 0 17 //ボタンの配置 18 @IBOutlet weak var buttonLabel: UIButton! 19 @IBOutlet weak var myTableView: UITableView! 20 21 @IBAction func record(_ sender: Any) { 22 // Check if we habe an avtive recorder 23 if audioRecorder == nil { 24 numberOfRecords += 1 25 let filename = getDirectory().appendingPathComponent("(numberOfRecords).m4a") 26 //AVsampleReteKeyは、サンプル 27 let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC), AVSampleRateKey: 12000, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue] 28 29 //start audio recording 30 do { 31 audioRecorder = try AVAudioRecorder(url: filename, settings: settings) 32 audioRecorder.delegate = self 33 audioRecorder.record() 34 buttonLabel.setTitle("Start Recording", for: .normal) 35 } catch { 36 displayAlert(title: "Ups!", message: "Recording failed") 37 }} else { 38 //stop audio recording 39 audioRecorder.stop() 40 audioRecorder = nil 41 UserDefaults.standard.set(numberOfRecords, forKey: "myNumber") 42 myTableView.reloadData() 43 buttonLabel.setTitle("Start Recording", for: .normal) 44 } 45} 46 47 override func viewDidLoad() { 48 super.viewDidLoad() 49 50 //Setting up session 51 recordingSession = AVAudioSession.sharedInstance() 52 53 if let number:Int = UserDefaults.standard.object(forKey: "myNumber") as? Int 54 { 55 numberOfRecords = number 56 } 57 58 59 AVAudioSession.sharedInstance().requestRecordPermission { (hasPermisson) in 60 if hasPermisson 61 { 62 print("ACCEPTED") 63 } 64 } 65 } 66 67 //Functuon that gets path to directry 68 func getDirectory() -> URL 69 { 70 let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) 71 let documentDirectory = paths[0] 72 return documentDirectory 73 } 74 75 //Functuon that displays an alert 76 func displayAlert(title:String, message:String) 77 { 78 let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) 79 alert.addAction(UIAlertAction(title: "dismiss", style: .default, handler: nil)) 80 present(alert, animated: true, completion: nil) 81 } 82 83 //Setting up table view 84 85 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 86 return numberOfRecords 87 } 88 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 89 let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 90 cell.textLabel?.text = String(indexPath.row + 1) 91 return cell 92 } 93 //録音したものを聴けるようにする。 94 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 95 { 96 let path = getDirectory().appendingPathComponent("(indexPath.row + 1).m4a") 97 98 do 99 { 100 audioPlayer = try AVAudioPlayer(contentsOf: path) 101 audioPlayer.play() 102 } 103 catch 104 { 105 106 } 107 } 108 109 } 110 111 112

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

2020年の9月17日のアップデート後に音声録音アプリをビルドしてみたところ、ボタンが押せなくなりました。
以前は、録音と保存ができました。

Version 12.0 (12A7209) にアップデートして、ご提示いただいたコードをコンパイル、実行してみましたが、Version 11.X のときと挙動がは変わらず、問題ありませんでした。

ただ、一ヶ所きになったのは、

Swift

1 //start audio recording 2 do { 3 audioRecorder = try AVAudioRecorder(url: filename, settings: settings) 4 audioRecorder.delegate = self 5 audioRecorder.record() 6 buttonLabel.setTitle("Start Recording", for: .normal) 7 } catch {

と、録音開始してもボタンのタイトルは「Start Recording」のままですが、これは

Swift

1 buttonLabel.setTitle("Stop Recording", for: .normal)

の間違いでしょうか(本質的なミスではありませんが、UI 的に紛らわしいですね)。

投稿2020/09/20 01:11

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isekiryu

2020/09/20 03:01

ありがとうございます。試してみたのですが、ボタンが押せない状態でした。 しかし、新しくプロジェクトでやってみたところ、うまくいきました。 以前のものが何故できないのかが謎ですが、新しいものでやっていきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問