Разрешить действие при нажатии 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