我为iPhone制作了一个小型木琴应用程序,它有7个按钮,每个按钮在触摸时都会弹出自己的音符。我想扩展它的功能,以便当用户将手指从顶部按钮拖到最底部或其他方向时,所有音符都会按顺序播放,就像您将手指拖过钢琴键一样。
我已尝试添加各种拖动手势(内/外,进入/退出),但它们都只使用接收动作的第一个按钮。即当手指被拖到第一个按钮外面时播放第一个声音,但是当它进入第二个按钮时,没有任何反应。
我试图将不同的手势(Touch Up Inside + Drag)连接到这个单独的IBAction中:
@IBAction func notePressed(_ sender: UIButton) {
playNote(noteNumber: sender.tag)
}
func playNote(noteNumber : Int) {
let soundURL = Bundle.main.url(forResource: "note\(noteNumber)", withExtension: "wav")
do {
try audioPlayer = AVAudioPlayer.init(contentsOf: soundURL!)
} catch {
print(error)
}
audioPlayer.play()
}
也许应该创建单独的IBActions?任何人都可以给我一个关于我应该看的地方的提示吗?
答案 0 :(得分:0)
这是我的解决方法:
ViewController
类。检查panView.swift
文件。在这里,您将创建事件捕获器来监听Swipe Gesture Recognizer
(您需要先将其添加到主故事板中)AVAudioPlaye
对象的数组。使用路径URL
初始化这些对象,然后准备将其播放。请参见prepareSounds()
函数。 更详细的说明here
让我知道您在重新创建应用程序时是否遇到任何麻烦。
加油!