2012-04-24 21 views
12

Había creado un teclado personalizado con UIView. Sin embargo, no escuché el sonido del teclado. Así que traté de seguir los códigos. Pero no puedo escuchar nada. ¿Cómo puedo reproducir ese sonido de clic del teclado?¿Cómo se reproduce el sonido del clic del teclado en un teclado personalizado?

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

Y también probé la siguiente.

AudioServicesPlaySystemSound(0x450); 

¿Cómo puedo hacerlo?

Respuesta

34

Prueba esto:

[[UIDevice currentDevice] playInputClick]; 

Tenga en cuenta que

Utilice este método para reproducir el teclado estándar de sistema de clic en respuesta a un usuario tocando en una entrada o teclado personalizado vista accesorio. Un clic en solo se reproduce si el usuario ha activado los clics del teclado en Configuración> Sonidos , y solo si la vista de entrada está habilitada y es visible.

para habilitar una entrada personalizada o ver accesorio para clics de entrada, siga los dos pasos siguientes:

adoptar el protocolo UIInputViewAudioFeedback en la clase de vista de entrada. Implemente el método de delegado enableInputClicksWhenVisible para devolver SÍ.

+5

Seguí las instrucciones, pero sin embargo, no hay un clic en mi teclado. En el teclado del sistema, el sonido de clic funciona. –

3

No se pudo obtener nada de esto para trabajar, pero esto funcionó para mí:

#import <AudioToolbox/AudioToolbox.h> 

AudioServicesPlaySystemSound(1104); 

Pero aún así tuve que subclase un UIButton y añadir el Protocolo UIInputViewAudioFeedback a ella.

+0

Esto funcionó. Ni siquiera tuve que agregar el protocolo UIInputViewAudioFeedback. Pero no respeta la configuración del sistema del sonido de clic del teclado. Estoy en iOS 11. –

1

En Swift agrega una extensión a la vista de entrada de la siguiente manera;

extension UIInputView : UIInputViewAudioFeedback { 

    public var enableInputClicksWhenVisible: Bool { 
     return true 
    } 

} 

En el método de acción para los botones llamar a la siguiente función:

UIDevice.current.playInputClick() 

Añadir la siguiente propiedad a su info.plist:

NSExtension | NSExtensionAttributes | RequestsOpenAccess = SÍ

+0

Reproduce sonido incluso si deshabilitamos el sonido del teclado desde "configuraciones de teléfono", cualquier solución. –

+0

Como recuerdo, funciona, pero es un problema de almacenamiento en caché. Si reinicia el dispositivo luego de cambiar la configuración, entrará en vigencia. – Litehouse

Cuestiones relacionadas