Sepa cuándo terminó el dictado en una UITextView

Me gustaría saber cuándo termina el dictado (idealmente también cuando comenzó).

Mi UIViewController que incluye la UITextView ajusta al protocolo UITextInputDelegate .

Para hacerlo funcionar tuve que suscribirme a UITextInputCurrentInputModeDidChangeNotification

 override func viewDidLoad() { super.viewDidLoad() NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeInputMode:", name: UITextInputCurrentInputModeDidChangeNotification, object: nil) } 

y agregue el delegado allí (no funcionó simplemente agregándolo a viewDidLoad ())

 func changeInputMode(sender : NSNotification) { textView.inputDelegate = self } 

Iniciando y deteniendo el dictado, UITextInput ahora llama correctamente a los methods de delegado requeridos:

 func selectionWillChange(textInput: UITextInput){ } func selectionDidChange(textInput: UITextInput){ } func textWillChange(textInput: UITextInput){ } func textDidChange(textInput: UITextInput){ } 

Sin embargo, lo que no se llama es

 func dictationRecordingDidEnd() { println("UITextInput Dictation ended") } 

¿Por qué? ¿Cómo puedo recibir una notificación / llamar a un método al finalizar el dictado?

De acuerdo, esto es lo que funcionó para mí al no usar el protocolo UITextInput sino UITextInputCurrentInputModeDidChangeNotification .

 func changeInputMode(sender : NSNotification) { var primaryLanguage = textView.textInputMode?.primaryLanguage if primaryLanguage != nil { var activeLocale:NSLocale = NSLocale(localeIdentifier: primaryLanguage!) if primaryLanguage == "dictation" { // dictation started } else { // dictation ended } } }