知道听写何时在UITextView中结束



我想知道听写何时结束(最好是何时开始)。

包括UITextView的我的UIViewController符合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")
}

为什么?听写结束后,我如何获得通知/调用方法?

好吧,以下是我不使用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
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新