如何在自定义键盘中播放键盘点击声?

时间:2012-04-24 13:35:45

标签: ios objective-c cocoa-touch custom-keyboard

我使用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);

我该怎么办?

4 个答案:

答案 0 :(得分:35)

试试这个:

[[UIDevice currentDevice] playInputClick];

请注意

  

使用此方法播放标准系统键盘响应   用户点击自定义输入或键盘配件视图。一个   只有当用户在“设置”>中启用了键盘点击时,才会点击播放   声音,并且仅当输入视图本身已启用且可见时。

     

要为输入点击启用自定义输入或附件视图,请执行   以下两个步骤:

     

在输入视图类中采用UIInputViewAudioFeedback协议。   实现enableInputClicksWhenVisible委托方法返回   YES。

答案 1 :(得分:5)

无法使这些工作,但这对我有用:

#import <AudioToolbox/AudioToolbox.h>

AudioServicesPlaySystemSound(1104);

但我仍然必须继承UIButton并将UIInputViewAudioFeedback协议添加到其中。

答案 2 :(得分:3)

在Swift中为输入视图添加一个扩展名,如下所示;

extension UIInputView : UIInputViewAudioFeedback {

    public var enableInputClicksWhenVisible: Bool {
        return true
    }

}

在按钮的操作方法中,调用以下函数:

    UIDevice.current.playInputClick()

将以下属性添加到info.plist:

  

NSExtension | NSExtensionAttributes | RequestsOpenAccess = YES

答案 3 :(得分:0)

对于 swift 来说,实际上有一种非常简单的方法来播放键盘音效。

首先:

import AudioToolbox

然后在需要音效时使用它。

AudioServicesPlaySystemSound(0x450)