2012-04-24 72 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