У меня была такая же проблема, и я наконец-то понял.
Если вы реализуете протокол в UIViewController, он не работает. Это должно быть реализовано в подклассе UIView.
Итак, чтобы заставить его работать, я создал представление в конструкторе интерфейсов с контроллером представления. Затем я добавил еще один класс, который является подклассом UIView. Этот класс реализует протокол UIInputViewAudioFeedback. Затем в конструкторе интерфейса я пошел в инспектор Identity моего представления и изменил класс на свой подкласс UIView, который реализует протокол UIInputViewAudioFeedback. И звук щелчка клавиатуры теперь работает.
Мой контроллер представления все еще вызывает [[UIDevice currentDevice] playInputClick]
, все, что я сделал, это переместил код для протокола UIInputViewAudioFeedback в подкласс UIView и установил для моего класса представлений мой подкласс UIView.