Разрешить действие при нажатии UITextView

Я хотел бы иметь возможность эффективно использовать UITextView в качестве кнопки в моем приложении Swift для iOS. Когда я нажимаю на текстовое представление, я не хочу, чтобы оно было редактируемым, но я хочу, чтобы оно изменило цвет фона текстового представления и начало использовать программное обеспечение для распознавания речи в приложении. Я видел некоторые другие вопросы, подобные этому, но ни один не отвечал на этот конкретный вопрос.

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
    guard textView == inView else {

        guard textView == resultView else {
            return false
        }

        nextButton.isEnabled = true

        return false

    }

    if audioEngine.isRunning {

        let myColor: UIColor = UIColor(red: 50, green: 0, blue: 0, alpha: 0.75)

        inView.layer.backgroundColor = myColor.cgColor
        audioEngine.inputNode.removeTap(onBus: 0)

        globalVariables.boolRecording = false
        audioEngine.stop()

        recognitionRequest?.endAudio()
        microphoneButton.isEnabled = true
        microphoneButton.setTitle("Start Recording", for: .normal)

        globalVariables.finalText = globalVariables.finalText + globalVariables.tempText
        globalVariables.tempText = ""

        self.inView.text = ""

        return false

    } else {

        let myColor: UIColor = UIColor(red: 0, green: 50, blue: 0, alpha: 0.75)

        inView.layer.backgroundColor = myColor.cgColor
        globalVariables.boolRecording = true
        startRecording()
        microphoneButton.setTitle("Stop Recording", for: .normal)

        return false

    }

}

1 ответ

Вы можете использовать метод UITextViewDelegate: textViewShouldBeginEditing.

Вернуть false из этого метода, чтобы предотвратить создание этого конкретного текстового поля firstResponder и изменить фон и начать распознавание речи.

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
    guard textView == speechTextView else {
        return true
    }
    // Change bg
    speechTextView.backgroundColor = UIColor.blue
    // Start speech
    startSpeechRecognition()
    return false
}

Не забудьте добавить делегата UITextview к себе:

speechTextView.delegate = self
Другие вопросы по тегам