Apple Watch如何獲得文字輸入?

東狗發表於2015-04-18

如何轉換使用者語音指令為文字輸入

WatchKit最有趣的特性之一 ——將使用者語音指令轉換成文字輸入——卻是討論最少的。讓我們起個頭。

對我說話

處理對話的是一個標準模態框,在你當前WKInterfaceController呼叫

presentTextInputControllerWithSuggestions:allowedInputMode:completion:

控制器是非同步執行的,等待使用者按“完成”並確認他們的輸入。確認之後,主執行緒執行完成模組,之後你可以隨意使用提供的結果。

你總是應該在你WatchKit擴充的主執行緒中呼叫

建議

當語音輸入控制器出現時,你也可以選擇提供一個NSString物件的序列,給使用者提供輸入建議。例如在一個訊息應用裡,你也許想要給使用者一些他們可以發給朋友的常見回覆。

輸入模式

你需要從三種WKTextInputMode中選擇一個展現給使用者。

  • WKTextInputModePlain:只有語音/建議文字。沒有emoji表情。emoji按鈕會被隱藏。
  • WKTextInputModeAllowEmoji:語音,建議文字,以及非動畫的emoji
  • WKTextInputModeAllowAnimatedEmoji:語音,建議文字和所有emoji

如果你跳過提供建議的步驟並且設定輸入模式為WKTextInputModePlain,使用者會直接進入語音輸入介面。

輸入處理

輸入處理模組會從使用者那兒收到一個包含輸入的NSArray。如果沒接到輸入時模態框就被取消了,這個array序列為nil。一般情況下,這個array會包含一個表示文字輸入的NSString物件。

但是,如果你允許使用者輸入emoji,它也可以包含一個NSData物件,對應一個emoji圖片。你可以用這個NSData物件生成一個UIImage,或者直接在WKInterfaceImage裡使用。

由於文字輸入介面是彈出的模態框,WKInterfaceController會在完成模組被呼叫之前重新被啟用。

模擬器

涉及到在模擬器中測試指令,還有幾點需要提一下:

  • 雖然你可以隨意指定輸入模式,模擬器只支援選擇建議的字串進行文字輸入。你不可以用麥克風說話並將它轉換成文字。類似地,模擬器不支援選擇任何emoji。
  • 指令螢幕會是空白的。要知道,用在真正的表上的時候,語音輸入模組會立即啟動。使用者需要點選“完成”按鈕來確認指令文字,之後指令才會傳回你的應用。

相關文章