Я хотел бы выполнить одно действие, когда пользователь нажимает любую кнопку громкости, и другое, когда они перестают нажимать ее, аналогично тому, что я могу сделать, переопределив touchesBegan()
и touchesEnded
.
I ' Насколько я знаю, я могу перечислить уровень громкости при изменении следующим образом:
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?