2012-04-24 112 views
12

我已經創建了自定義鍵盤UIView。 但是我沒有聽到鍵盤的咔嗒聲。 所以我嘗試了下面的代碼。但我聽不到任何東西。 如何播放鍵盤聲音?如何在自定義鍵盤中播放鍵盤聲音?

NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
               pathForResource:@"Tock" 
               ofType:@"aiff"]]; 
    AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil]; 
    [click setVolume:0.15f]; 
    [click play]; 

而且我還嘗試了下一個。

AudioServicesPlaySystemSound(0x450); 

我該怎麼辦?

回答

34

試試這個:

[[UIDevice currentDevice] playInputClick]; 

注意

使用此方法來響應 在自定義的輸入或鍵盤附件視圖輕敲用戶播放標準的系統鍵盤點擊。 A 只有當用戶在設置> 聲音中啓用了鍵盤單擊並且僅當輸入視圖本身啓用並可見時,纔會播放。

要啓用輸入的點擊自定義輸入或附屬視圖,執行 以下兩個步驟:

採用在輸入視圖類的UIInputViewAudioFeedback協議。 實現enableInputClicksWhenVisible委託方法返回 YES。

+5

我按照說明操作,但是,在我的鍵盤上沒有點擊聲音。在系統鍵盤上點擊聲音。 – 2014-08-19 14:29:37

3

無法得到任何的這個工作,但是這個工作對我來說:

#import <AudioToolbox/AudioToolbox.h> 

AudioServicesPlaySystemSound(1104); 

但我仍不得不子類UIButtonUIInputViewAudioFeedback協議添加到它。

+0

這工作。我甚至沒有添加UIInputViewAudioFeedback協議。但它不尊重鍵盤咔嗒聲的系統設置。我在iOS 11上。 – 2018-01-11 16:28:55

1

在Swift中,在輸入視圖中添加一個擴展名,如下所示:

extension UIInputView : UIInputViewAudioFeedback { 

    public var enableInputClicksWhenVisible: Bool { 
     return true 
    } 

} 

在操作方法爲你的按鈕調用下面的函數:

UIDevice.current.playInputClick() 

以下屬性添加到您的info.plist:

NSExtension | NSExtensionAttributes | RequestsOpenAccess = YES

+0

即使我們禁用了來自「手機設置」的鍵盤聲音,任何解決方案,它都會播放聲音。 – 2017-08-04 05:31:19

+0

正如我所記得的,它有效,但它是一個緩存問題。如果您在更改設置後重新啓動設備,它將會生效。 – Litehouse 2017-09-21 17:40:05