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

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

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

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

Q&A

解決済

1回答

231閲覧

XCODE と swift3で複数のボタンを押した時の処理方法を教えてください

Mineo_user

総合スコア8

Xcode

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

0グッド

0クリップ

投稿2017/10/16 12:54

###前提・実現したいこと
swift初心者ですが、XCODE と swift3で以下のことがしたいです。

———————————
ABCの3つのボタンがあり、
Aを押しながらCを押すと1.mp3が再生され、
Bを押しながらCを押すと2.mp3が再生される
———————————

しかし、ひとつひとつのボタンを押して音が出せても
複数のボタンを押した時の処理がわかりません。

よろしくお願いします。

###該当のソースコード

import UIKit
import AVFoundation

class ViewController: UIViewController {

var sound01: AVAudioPlayer = AVAudioPlayer() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let musicFile01 = Bundle.main.path(forResource: "1", ofType: "mp3") do{ try sound01 = AVAudioPlayer(contentsOf: URL (fileURLWithPath: musicFile01!)) sound01.prepareToPlay() } catch { print(error) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //音再生 @IBAction func play00(_ sender: UIButton) { sound01.play() }

}

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

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

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

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

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

fuzzball

2017/10/16 22:36

複数のボタンを押した時はどうしたいのでしょうか?
Mineo_user

2017/10/17 00:38

もう少し具体的に書きますと、楽器っぽいアプリを考えています。 ABCの三つのボタンがあり、Cを押した時に音がなる構造で、Aを押しながらCを押すと例えばドの音がでで、Bを押しながらCを押すとレのmp3音源がなる様な事がしたいです。
guest

回答1

0

ベストアンサー

Aを押しながらCを押すと例えばドの音がでで、Bを押しながらCを押すとレのmp3音源がなる

ボタンCを押したときに、ボタンA/ボタンBのstateをチェックして下さい。
ボタンA/ボタンBを押していなければ.normal、押していれば.highlightedになっています。

投稿2017/10/17 01:08

fuzzball

総合スコア16731

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

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

Stripe

2017/10/17 03:33

それって、UIButtonで実際にやってみましたか? touchDownしてからtouchUpするまでの間、一つのUIButtonによってイベント追跡されませんでしたか?
fuzzball

2017/10/17 03:57

実際に試しました。
Mineo_user

2017/10/17 09:21

いろいろ試してみましたが、ボタンCを押したときに、ボタンA/ボタンBのstateの確認の仕方がわからないです。具体的なコードを教えてもらえますか。
fuzzball

2017/10/17 09:33

ボタンA/BのOutletを作っておいて、例えばbuttonAという名前だとすると buttonA.state で取得できます。
Mineo_user

2017/10/22 02:25

if文の形で判別したいのですが、どうしたら良いですか。 以下ではエラーです。 if buttonA.state.highlighted{ }
fuzzball

2017/10/23 00:34

if buttonA.state == .highlighted { } です。
Mineo_user

2017/10/23 10:24

ありがとうございます。 ボタンCに以下@IBActionに関連付けるとちゃんとsound00.play()が実行されるのですが、 ボタンAを押すとエラーで止まってしまいます。ボタンAを以下のOutletで作るのは間違ってますか? @IBOutlet weak var buttonA: UIButton! @IBAction func play00(_ sender: UIButton) { if buttonA.state == .highlighted { sound01.play() }else { sound00.play() }
fuzzball

2017/10/24 00:21

エラー内容を書いて下さい。 そのOutletはStoryboard上のボタンと繋がっていますか? ただ、ボタンAを押して止まるのであればOutletは関係ないと思いますが‥。 ボタンAのActionはどうなっていますか?
Mineo_user

2017/10/25 01:44

ボタンAの記述場所が間違っていただけででしたので、直したら無事できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問