InputAdaptation.md 2.2 KB
Newer Older
O
migrate  
oceanxiao 已提交
1 2 3
# 输入法适配

在小游戏中Unity游戏唤不起输入法,需要使用WX_SDK中提供的方法来唤起输入法,并做简单的逻辑修改来适配。
ocean2o11's avatar
ocean2o11 已提交
4 5 6 7

详细示例请参考[API Demo](https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/tree/main/Demo/API)

以UGUI的Input组件为例,需要给Input 绑定以下脚本:
O
migrate  
oceanxiao 已提交
8
```
良宜's avatar
良宜 已提交
9
public class Inputs : MonoBehaviour, IPointerClickHandler, IPointerExitHandler
O
migrate  
oceanxiao 已提交
10 11
{
    public InputField input;
ocean2o11's avatar
ocean2o11 已提交
12
    private bool isShowKeyboad = false;
O
migrate  
oceanxiao 已提交
13 14
    public void OnPointerClick(PointerEventData eventData)
    {
良宜's avatar
良宜 已提交
15
        Debug.Log("ooooo");
ocean2o11's avatar
ocean2o11 已提交
16
        ShowKeyboad();
O
migrate  
oceanxiao 已提交
17 18 19 20 21 22 23
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        // 隐藏输入法
        if (!input.isFocused)
        {
ocean2o11's avatar
ocean2o11 已提交
24
            HideKeyboad();
O
migrate  
oceanxiao 已提交
25 26 27 28
        }

    }

良宜's avatar
良宜 已提交
29
    public void OnInput(OnKeyboardInputCallbackResult v)
O
migrate  
oceanxiao 已提交
30
    {
良宜's avatar
良宜 已提交
31 32
        Debug.Log("onInput");
        Debug.Log(v.value);
O
migrate  
oceanxiao 已提交
33 34
        if (input.isFocused)
        {
良宜's avatar
良宜 已提交
35
            input.text = v.value;
O
migrate  
oceanxiao 已提交
36
        }
良宜's avatar
良宜 已提交
37

O
migrate  
oceanxiao 已提交
38 39
    }

良宜's avatar
良宜 已提交
40
    public void OnConfirm(OnKeyboardInputCallbackResult v)
O
migrate  
oceanxiao 已提交
41 42
    {
        // 输入法confirm回调
良宜's avatar
良宜 已提交
43 44
        Debug.Log("onConfirm");
        Debug.Log(v.value);
ocean2o11's avatar
ocean2o11 已提交
45
        HideKeyboad();
O
migrate  
oceanxiao 已提交
46 47
    }

良宜's avatar
良宜 已提交
48
    public void OnComplete(OnKeyboardInputCallbackResult v)
O
migrate  
oceanxiao 已提交
49 50
    {
        // 输入法complete回调
良宜's avatar
良宜 已提交
51 52
        Debug.Log("OnComplete");
        Debug.Log(v.value);
ocean2o11's avatar
ocean2o11 已提交
53
        HideKeyboad();
O
migrate  
oceanxiao 已提交
54 55
    }

ocean2o11's avatar
ocean2o11 已提交
56
    private void ShowKeyboad()
O
migrate  
oceanxiao 已提交
57
    {
ocean2o11's avatar
ocean2o11 已提交
58 59 60 61 62 63 64 65
        if (!isShowKeyboad)
        {
            WX.ShowKeyboard(new ShowKeyboardOption()
            {
                defaultValue = "xxx",
                maxLength = 20,
                confirmType = "go"
            });
良宜's avatar
良宜 已提交
66

ocean2o11's avatar
ocean2o11 已提交
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
            //绑定回调
            WX.OnKeyboardConfirm(OnConfirm);
            WX.OnKeyboardComplete(OnComplete);
            WX.OnKeyboardInput(OnInput);
            isShowKeyboad = true;
        }
    }

    private void HideKeyboad()
    {
        if (isShowKeyboad)
        {
            WX.HideKeyboard(new HideKeyboardOption());
            //删除掉相关事件监听
            WX.OffKeyboardInput(OnInput);
            WX.OffKeyboardConfirm(OnConfirm);
            WX.OffKeyboardComplete(OnComplete);
            isShowKeyboad = false;
        }
O
migrate  
oceanxiao 已提交
86 87 88
    }

}
良宜's avatar
良宜 已提交
89
```