Воспроизведение звука щелчка всякий раз, когда я нажимаю на все мое приложение внутри

В моем приложении для нажатия кнопки или любого нажатия мне нужно воспроизвести один звуковой сигнал при нажатии или нажатии пользователем. Я добавил этот код в AppDelegate:

var audioPlayer: AVAudioPlayer?
func playSound() {
        let audioFileURL = Bundle.main.url(forResource: "/Sound/music1", withExtension: "mp3")
        do {
            try audioPlayer = AVAudioPlayer(contentsOf: audioFileURL!)
        } catch let error {
            print(error.localizedDescription)
        }
        audioPlayer?.play()
    }

Я не знаю, как объединить или передать эти методы всем моим нажатиям и нажатиям кнопок, чтобы воспроизвести этот звуковой сигнал. Я не хочу добавлять каждое нажатие кнопки в каждом vc. Любая помощь с динамическими решениями для нажатия кнопки и любого сенсорного события в моем приложении?


person tivin does    schedule 21.03.2019    source источник
comment
Вы хотите, чтобы весь экран был одной кнопкой? так что когда вы касаетесь экрана, он издает звуковой сигнал?   -  person Asbis    schedule 21.03.2019
comment
нет .... в моем приложении у меня есть много кнопок и кнопок "Назад" на панели навигации и событий щелчка. Поэтому, когда когда-либо происходит какое-либо действие касания, мне нужно воспроизвести звук биба с этими действиями.   -  person tivin does    schedule 21.03.2019
comment
Итак, вы хотите, чтобы все кнопки в вашем представлении издавали один и тот же звуковой сигнал всякий раз, когда они касаются кнопки?   -  person Asbis    schedule 21.03.2019
comment
да, а также у меня есть некоторая ячейка представления коллекции. Так что, если я нажму, мне также нужно воспроизвести звук касания.   -  person tivin does    schedule 21.03.2019
comment
@Asbis есть какие-нибудь возможности?   -  person tivin does    schedule 21.03.2019
comment
Я помогу тебе завтра.   -  person Asbis    schedule 21.03.2019
comment
@Asbis Любая помощь в этом ... я все перепробовал ... ничего не работает   -  person tivin does    schedule 22.03.2019
comment
Не могли бы вы опубликовать скриншот своего приложения или набросок того, как вы хотите, чтобы оно выглядело?   -  person Asbis    schedule 22.03.2019
comment
зачем скрин нужен?. Я добавил этот опубликованный код в appdelegate. Поэтому, когда пользователь нажимает в моем приложении, мне нужно издавать звуковой сигнал...   -  person tivin does    schedule 22.03.2019
comment
ой! Теперь я понимаю, чего вы пытаетесь достичь. Вы видели это? stackoverflow .com/questions/37996497/   -  person Asbis    schedule 22.03.2019
comment
@Asbis, теперь я попробую это ... но не могли бы вы помочь мне здесь ... это немного срочно: stackoverflow.com/questions/55294818/   -  person tivin does    schedule 22.03.2019


Ответы (1)


Ну, вы можете вызывать функцию playSound() в каждом действии для кнопок, если вам нужны разные жесты, например, долгое нажатие, вы можете использовать распознаватель жестов.

Например, если вам нужно воспроизвести простой звуковой сигнал при нажатии кнопки, просто вызовите playSound() внутри @IBAction кнопки, но вам нужно воспроизвести звуковой сигнал об ошибке, если пользователь нажимает кнопку в течение длительного периода времени, поэтому добавьте UILongPressGestureRecognizer в ваших кнопках следующим образом: введите здесь описание изображения

Таким образом, вы можете связать распознаватель жестов со своим кодом, например с простым @IBAction, например так:

введите здесь описание изображения

Но это просто вам нужны различные жесты, если вам нужен простой звуковой сигнал, почему бы вам не попробовать это:

@IBAction func testAction(_ sender: UIButton) {
     playSound()
}
person Humberto Lima    schedule 21.03.2019
comment
спасибо за ваше решение, но, пожалуйста, прочитайте мой пост. я просил динамический в одном месте. Мне не нужно писать во всех действиях. - person tivin does; 21.03.2019
comment
Ну не могу понять, зачем вам это нужно динамически. но я сделал простой пример и разместил в своем git, посмотрите, является ли это ответом или, по крайней мере, началом, это ссылка: github.com/TexugoProgramador/tapTest - person Humberto Lima; 22.03.2019
comment
Вы сохраняете позицию и ширину/высоту кнопок в массиве, поэтому, используя местоположение при касании, вы создаете цикл в массиве для сравнения положения касания с положением кнопок. - person Humberto Lima; 22.03.2019
comment
динамически значит. В моем appdelegate мне нужно написать этот код. И когда когда-либо происходит нажатие кнопки, мне нужно это вызвать. например, установить цвет навигации по умолчанию в делегате приложения для всех vc во всем приложении. - person tivin does; 22.03.2019
comment
вы можете создать собственный класс кнопок? например: class customButton: UIButton { func playSound() { print(воспроизведение звука) } переопределить func sendAction(_ action: Selector, to target: Any?, for event: UIEvent?) { playSound() super.sendAction(action, to: target, for: event) } } Итак, вам просто нужно изменить classe UIButton на ваш customButton - person Humberto Lima; 22.03.2019