Xamarin에서 watchOS 텍스트 입력 작업Working with watchOS Text Input in Xamarin

Apple Watch는 사용자가 텍스트를 입력할 수 있는 키보드를 제공 하지 않지만 다음과 같은 몇 가지 조사식의 대안을 지원 합니다.The Apple Watch does not provide a keyboard for users to input text, however it does support some watch-friendly alternatives:

  • 미리 정의 된 텍스트 옵션 목록에서 선택Selecting from a pre-defined list of text options,
  • Siri 받아쓰기,Siri dictation,
  • 이 모 지 선택,Choosing an emoji,
  • WatchOS 3에 도입 된 문자 단위로 문자를 사용한 필기 인식Scribble letter-by-letter handwriting recognition (introduced in watchOS 3).

시뮬레이터는 현재 받아쓰기를 지원 하지 않지만 다음과 같이 텍스트 입력 컨트롤러의 다른 옵션 (예: Scribble)을 테스트할 수 있습니다.The simulator does not currently support dictation but you can still test the text input controller's other options, such as Scribble, as shown here:

Watch 앱에서 텍스트 입력을 수락 하려면:To accept text input in a watch app:

  1. 미리 정의 된 옵션의 문자열 배열을 만듭니다.Create a string array of predefined options.
  2. 배열을 사용 하 여 PresentTextInputController를 호출 하 고,이를 허용 하지 않을 지 여부를 지정 하 고, 사용자가 완료 될 때 호출 되는 Action를 호출 합니다.Call PresentTextInputController with the array, whether to allow emoji or not, and an Action that is called when the user is finished.
  3. 완료 작업에서 입력 결과를 테스트 하 고 응용 프로그램에서 적절 한 작업을 수행 합니다 (레이블의 텍스트 값을 설정할 수 있음).In the completion action, test for the input result and take appropriate action in the app (possibly setting a label's text value).

다음 코드 조각에서는 미리 정의 된 세 가지 옵션을 사용자에 게 제공 합니다.The following code snippet presents three pre-defined options to the user:

var suggest = new string[] {"Get groceries", "Buy gas", "Post letter"};

PresentTextInputController (suggest, WatchKit.WKTextInputMode.AllowEmoji, (result) => {
    // action when the "text input" is complete
    if (result != null && result.Count > 0) {
    // this only works if result is a text response (Plain or AllowEmoji)
        enteredText = result.GetItem<NSObject>(0).ToString();
        Console.WriteLine (enteredText);
        // do something, such as myLabel.SetText(enteredText);

WKTextInputMode 열거형에는 세 개의 값이 있습니다.The WKTextInputMode enumeration has three values:

  • 제목Plain
  • AllowEmoji 모 지AllowEmoji
  • AllowAnimatedEmojiAllowAnimatedEmoji


일반 모드를 설정 하면 사용자는 다음을 선택할 수 있습니다.When the plain mode is set, the user can choose:

  • 받아쓰기Dictation,
  • Scribble 또는Scribble, or
  • 응용 프로그램에서 제공 하는 미리 정의 된 목록에서from a pre-defined list that the application supplies.

결과는 항상 string으로 캐스팅할 수 있는 NSObject로 반환 됩니다.The result is always returned as an NSObject that can be cast to a string.

이 모 지Emoji

다음과 같은 두 가지 유형이 있습니다.There are two types of emoji:

  • 일반 유니코드이 모 지Regular Unicode emoji
  • 애니메이션 이미지Animated images

사용자가 유니코드를 선택 하면 문자열로 반환 됩니다.When the user chooses a Unicode emoji, it is returned as a string.

애니메이션이 적용 된 이미지를 선택할 경우 완료 처리기의 result에는이 모 지 UIImage포함 된 NSData 개체가 포함 됩니다.If an animated image emoji is selected the result in the completion handler will contain an NSData object that contains the emoji UIImage.

받아쓰기만 허용Accepting Dictation Only

제안을 표시 하지 않고 사용자를 받아쓰기 화면으로 직접 이동 하는 경우 (또는 Scribble 옵션):To take the user directly to the dictation screen without showing any suggestions (or the Scribble option):

  • 제안 목록에 빈 배열을 전달 합니다.pass an empty array for the suggestions list, and
  • WatchKit.WKTextInputMode.Plain설정 합니다.set WatchKit.WKTextInputMode.Plain.
PresentTextInputController (new string[0], WatchKit.WKTextInputMode.Plain, (result) => {
    // action when the "text input" is complete
    if (result != null && result.Count > 0) {
        dictatedText = result.GetItem<NSObject>(0).ToString();
        Console.WriteLine (dictatedText);
        // do something, such as myLabel.SetText(dictatedText);

사용자가 이야기할 때 조사식 화면에는 인식할 수 있는 텍스트 (예: "This is a test")가 포함 된 다음 화면이 표시 됩니다.When the user is speaking, the watch screen displays the following screen which includes the text as it is understood (for example "This is a test"):

완료 단추를 누르면 텍스트가 반환 됩니다.Once they press the Done button the text will be returned.