知道UITextView中的听写何时结束

时间:2015-02-27 10:17:21

标签: ios swift uitextview dictation

我想知道听写何时结束(理想情况下也就是开始时)。

我的UIViewController包含UITextView符合UITextInputDelegate协议的内容。

要使其正常工作,我必须订阅UITextInputCurrentInputModeDidChangeNotification

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

并在那里添加委托(它只是将其添加到viewDidLoad()无效)

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

启动和停止听写UITextInput现在可以正确调用所需的委托方法:

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

然而,没有被调用的是

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

为什么呢?我怎样才能收到通知/调用听写方法?

1 个答案:

答案 0 :(得分:4)

好的,这对我来说不是使用UITextInput协议,而是使用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
        }
    }
}