ios - 拖动时连续发出声音

标签 ios swift

我为 iPhone 构建了一个小型木琴应用程序,它有 7 个按钮,每个按钮在触摸时都会播放自己的音符。我想扩展其功能,以便当用户将手指从顶部按钮拖动到最底部或其他方式时,所有音符都会按顺序播放,就像您在钢琴键上拖动手指一样。

enter image description here

我尝试过添加各种拖动手势(内部/外部、进入/退出),但它们都仅适用于接收操作的第一个按钮。 IE。当手指拖动到第一个按钮之外时,会播放第一个声音,但当手指进入第二个按钮时,则不会发生任何事情。

我试图将不同的手势(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()
}

也许应该创建单独的 IBAction?谁能告诉我应该去哪里寻找?

最佳答案

这是我的解决方法:

  • 展开ViewController类。检查 panView.swift 文件。在这里,您将创建事件捕获器来监听滑动手势识别器(您需要事先将其添加到主 Storyboard中)
  • 创建一个 AVAudioPlaye 对象数组。使用路径 URL 初始化这些对象,然后让它们准备好播放。请参阅 prepareSounds() 函数。

更详细的解释here

如果您在重新创建应用程序时遇到任何问题,请告诉我。

欢呼!

关于ios - 拖动时连续发出声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46277900/

相关文章:

iphone - 从 customcell 转到 viewController

ios - 如果我的 View Controller 不可滚动,我可以执行 'pull to refresh' 操作吗?

ios - UITableViewCell 强引用循环,但未被 Instruments 中的 Leaks 发现

ios - 如何修改或更改 PopoverPresentationController 的大小?

ios - 如何防止对象在当前作为委托(delegate)时被取消初始化

ios - 存在空格问题的 Xcode 项目/应用程序名称 - 找不到框架

ios - 沿特定角度的方向移动 View

ios - UILabel/UITextField 不使用异步 HTTP 请求更新

ios - 升级到 Xcode 10 后无法快速识别 Objective C 类

ios - '-[__NSCFNumber 行] : unrecognized selector sent to instance 0xb416910'