ios - Swift:在 iOS 设备上收听物理按钮向上/向下事件

标签 ios swift xcode uikit

我想在用户按下任一音量按钮时执行一个操作,并在他们停止按下时执行另一个操作,类似于我可以通过覆盖 touchesBegan() 执行的操作。和 touchesEnded .

我知道我可以在更改时列出音量级别,如下所示:

  NotificationCenter.default.addObserver(self, selector: #selector(volumeChanged), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)

  @objc func volumeChanged(notification: NSNotification) {
       if let userInfo = notification.userInfo {
          if let volumeChangeType = userInfo["AVSystemController_AudioVolumeChangeReasonNotificationParameter"] as? String {  
              // do something here, such as a switch based off of "volumeChangeType"
          }
      }
  }

但是,一旦用户完全调高或调低音量,就不再触发事件。此外,当用户停止按下按钮时不会触发任何事件。这是有道理的,因为我实际上是在听音量变化事件,而不是音量按钮按下事件。

有没有办法在 iOS 中收听物理按钮按下?

最佳答案

看看这个GitHub Repo看起来它提供了您所要求的一切。

关于ios - Swift:在 iOS 设备上收听物理按钮向上/向下事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59828077/

相关文章:

ios - 错误的 UISearchBar 触摸区域

ios - 如何在 Swift 5 中将电子表格数据预加载到 Core Data?

ios - 如何使用按钮打开 View

ios - SwiftUI:您如何关闭工作表并从 ContentView 启动不同的工作表?

iphone - 在 UITableView 中进行分页的最佳方式

ios - 强制 AFNetwork POST 请求同步

swift - 在 Swift 中打印 Set 的一个元素

ios - Collision Bitmask Hero 穿过一切,甚至是地面

ios - 迪尔德 : Symbol not found (Xcode 11)

objective-c - 根据内容在 UITableViewCell 中调整 UIWebView 的大小