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

Ios 如何在自定义键盘中播放键盘点击声音?,ios,objective-c,cocoa-touch,custom-keyboard,Ios,Objective C,Cocoa Touch,Custom Keyboard,我用UIView创建了自定义键盘。 但我并没有听到键盘的咔嗒声。 所以我试着按照密码做,但我什么都听不见。 如何播放键盘的咔哒声 NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Tock" o

我用
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);
我该怎么办?

试试这个:

[[UIDevice currentDevice] playInputClick];
注意

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

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

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


这一切都无法实现,但这对我来说很有效:

#import <AudioToolbox/AudioToolbox.h>

AudioServicesPlaySystemSound(1104);
#导入
AudioServicesPlaySystemSound(1104);

但我仍然必须将
UIButton子类化,并将
UIInputViewAudioFeedback
协议添加到其中

extension UIInputView : UIInputViewAudioFeedback {

    public var enableInputClicksWhenVisible: Bool {
        return true
    }

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

    UIDevice.current.playInputClick()
将以下属性添加到info.plist:

NSExtension | NSExtensionAttributes | RequestsOpenAccess=YES


对于斯威夫特来说,实际上有一种非常简单的方式来播放键盘音效

AudioServicesPlaySystemSound(0x450)
第一:

import AudioToolbox
然后在需要音效的时候使用这个

AudioServicesPlaySystemSound(0x450)

我按照说明操作,但键盘上没有咔嗒声。在系统键盘上,单击声音可以工作。即使我们从“电话设置”中禁用键盘声音,它也可以播放声音,任何解决方案。我记得,它可以工作,但这是一个缓存问题。如果您在更改设置后重新启动设备,它将生效。这是有效的。我甚至不需要添加UIInputViewAudioFeedback协议。但它不尊重键盘点击声音的系统设置。我在iOS 11上。