我想知道,当听写有结束(理想情况下还当它开始)。

我的UIViewController其中包括UITextView符合所述UITextInputDelegate协议(protocol)。

为了使它工作,我不得不订阅UITextInputCurrentInputModeDidChangeNotification

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

并添加委托(delegate)有(没有工作简单地将其添加到viewDidLoad中())
func changeInputMode(sender : NSNotification) {
    textView.inputDelegate = self
}

启动和停止听写UITextInput现在可以正确地调用所需的委托(delegate)方法:
func selectionWillChange(textInput: UITextInput){    }
func selectionDidChange(textInput: UITextInput){    }
func textWillChange(textInput: UITextInput){    }
func textDidChange(textInput: UITextInput){    }

但是什么不会被调用为
func dictationRecordingDidEnd() {
    println("UITextInput Dictation ended")
}

为什么?我怎样才能得到通知/呼吁听写的方法已经结束?

最佳答案

好的,这对我有用,而不是使用 UITextInput 协议(protocol)而是使用 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
        }
    }
}

关于ios - 知道听写何时在 UITextView 中结束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28762622/

10-13 09:04