簡體   English   中英

Swift:檢測音量按鈕按NOT音量改變事件

[英]Swift: Detect Volume Button Press NOT volume change events

有沒有辦法專門檢測按鈕按下,而不是音量變化事件。 我嘗試過這兩個帖子,但他們檢測到音量變化而不是按下按鈕:

在iOS8上按下音量上/下按鈕最干凈的方法

快速檢測音量按鈕按下

我不能使用這兩個事件的原因是因為我的應用程序會在某些事件期間自動調整音量。 當應用程序執行此操作時,它與用戶手動按下音量按鈕時的事件不同。

所以我要做的就是訂閱通知,就像他們在你鏈接的問題中做的那樣,然后添加一個名為programmaticVolumeChange的變量。 當您以編程方式將變量設置為true時,然后在函數observeValueForKeyPath中,如果變量為true,則不取消警報(並在之后自然將其設置為false)。 這樣,當用戶按下音量按鈕時,您知道它不是您的代碼。 也許測試程序化音量變化和函數調用之間的時間量,但我認為這樣會好的。

例如

var programmaticVolumeChange = false

func changeVolumeProgramatically() {

    programmaticVolumeChange = true
    //change volume programmatically after

}

override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject,
change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {

    if keyPath == "outputVolume"{

        if programmaticVolumeChange {

            programmaticVolumeChange = false

        } else {

            //handle logic for user volume button press

        }

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM