static void OnValueChange(int id, string value) { if (!instances.ContainsKey(id)) { return; } var instance = instances[id]; var index = instance.input.caretPosition; if (!instance.input.ReadOnly) { instance.input.text = value; } // InputField.ContentType.Name が Name の場合、先頭文字が強制的大文字になるため小文字にして比べる if (instance.input.contentType == ContentType.Name) { if (string.Compare(instance.input.text, value, true) == 0) { value = instance.input.text; } } // InputField の ContentType による整形したテキストを HTML の input に再設定します if (value != instance.input.text) { WebGLInputPlugin.WebGLInputText(id, instance.input.text); WebGLInputPlugin.WebGLInputSetSelectionRange(id, index, index); } }
/// <summary> /// 対象が選択されたとき /// </summary> /// <param name="eventData"></param> public void OnSelect(/*BaseEventData eventData*/) { var rect = GetScreenCoordinates(input.TextComponentRectTransform()); bool isPassword = input.contentType == ContentType.Password; var x = (int)(rect.x); //var y = (int)(Screen.height - (rect.y + rect.height)); //id = WebGLInputPlugin.WebGLInputCreate(x, y, (int)rect.width, (int)rect.height, input.textComponent.fontSize, input.text); var y = (int)(Screen.height - (rect.y)); id = WebGLInputPlugin.WebGLInputCreate(WebGLInput.CanvasId, x, y, (int)rect.width, (int)1, input.fontSize, input.text, input.lineType != LineType.SingleLine, isPassword); instances[id] = this; WebGLInputPlugin.WebGLInputEnterSubmit(id, input.lineType != LineType.MultiLineNewline); WebGLInputPlugin.WebGLInputOnFocus(id, OnFocus); WebGLInputPlugin.WebGLInputOnBlur(id, OnBlur); WebGLInputPlugin.WebGLInputOnValueChange(id, OnValueChange); WebGLInputPlugin.WebGLInputOnEditEnd(id, OnEditEnd); WebGLInputPlugin.WebGLInputTab(id, OnTab); // default value : https://www.w3schools.com/tags/att_input_maxlength.asp WebGLInputPlugin.WebGLInputMaxLength(id, (input.characterLimit > 0) ? input.characterLimit : 524288); WebGLInputPlugin.WebGLInputFocus(id); if (input.OnFocusSelectAll) { WebGLInputPlugin.WebGLInputSetSelectionRange(id, 0, input.text.Length); } WebGLWindow.OnBlurEvent += OnWindowBlur; }
/// <summary> /// 対象が選択されたとき /// </summary> /// <param name="eventData"></param> public void OnSelect() { var rect = GetScreenCoordinates(input.RectTransform()); bool isPassword = input.contentType == ContentType.Password; var fontSize = Mathf.Max(14, input.fontSize); // limit font size : 14 !! // モバイルの場合、強制表示する if (showHtmlElement || Application.isMobilePlatform) { var x = (int)(rect.x); var y = (int)(Screen.height - (rect.y + rect.height)); id = WebGLInputPlugin.WebGLInputCreate(WebGLInput.CanvasId, x, y, (int)rect.width, (int)rect.height, fontSize, input.text, input.placeholder, input.lineType != LineType.SingleLine, isPassword, false); } else { var x = (int)(rect.x); var y = (int)(Screen.height - (rect.y)); id = WebGLInputPlugin.WebGLInputCreate(WebGLInput.CanvasId, x, y, (int)rect.width, (int)1, fontSize, input.text, input.placeholder, input.lineType != LineType.SingleLine, isPassword, true); } instances[id] = this; WebGLInputPlugin.WebGLInputEnterSubmit(id, input.lineType != LineType.MultiLineNewline); WebGLInputPlugin.WebGLInputOnFocus(id, OnFocus); WebGLInputPlugin.WebGLInputOnBlur(id, OnBlur); WebGLInputPlugin.WebGLInputOnValueChange(id, OnValueChange); WebGLInputPlugin.WebGLInputOnEditEnd(id, OnEditEnd); WebGLInputPlugin.WebGLInputTab(id, OnTab); // default value : https://www.w3schools.com/tags/att_input_maxlength.asp WebGLInputPlugin.WebGLInputMaxLength(id, (input.characterLimit > 0) ? input.characterLimit : 524288); WebGLInputPlugin.WebGLInputFocus(id); #if WEBGLINPUT_TAB WebGLInputPlugin.WebGLInputEnableTabText(id, enableTabText); #endif if (input.OnFocusSelectAll) { WebGLInputPlugin.WebGLInputSetSelectionRange(id, 0, input.text.Length); } WebGLWindow.OnBlurEvent += OnWindowBlur; }
/// <summary> /// 対象が選択されたとき /// </summary> /// <param name="eventData"></param> public void OnSelect() { if (id != -1) { throw new Exception("OnSelect : id != -1"); } var rect = GetElemetRect(); bool isPassword = input.contentType == ContentType.Password; var fontSize = Mathf.Max(14, input.fontSize); // limit font size : 14 !! // モバイルの場合、強制表示する var isHidden = !(showHtmlElement || Application.isMobilePlatform); id = WebGLInputPlugin.WebGLInputCreate(WebGLInput.CanvasId, rect.x, rect.y, rect.width, rect.height, fontSize, input.text, input.placeholder, input.lineType != LineType.SingleLine, isPassword, isHidden, Application.isMobilePlatform); instances[id] = this; WebGLInputPlugin.WebGLInputEnterSubmit(id, input.lineType != LineType.MultiLineNewline); WebGLInputPlugin.WebGLInputOnFocus(id, OnFocus); WebGLInputPlugin.WebGLInputOnBlur(id, OnBlur); WebGLInputPlugin.WebGLInputOnValueChange(id, OnValueChange); WebGLInputPlugin.WebGLInputOnEditEnd(id, OnEditEnd); WebGLInputPlugin.WebGLInputTab(id, OnTab); // default value : https://www.w3schools.com/tags/att_input_maxlength.asp WebGLInputPlugin.WebGLInputMaxLength(id, (input.characterLimit > 0) ? input.characterLimit : 524288); WebGLInputPlugin.WebGLInputFocus(id); #if WEBGLINPUT_TAB WebGLInputPlugin.WebGLInputEnableTabText(id, enableTabText); #endif if (input.OnFocusSelectAll) { WebGLInputPlugin.WebGLInputSetSelectionRange(id, 0, input.text.Length); } WebGLWindow.OnBlurEvent += OnWindowBlur; }
static void OnValueChange(int id, string value) { if (!instances.ContainsKey(id)) { return; } var instance = instances[id]; if (!instance.input.ReadOnly) { instance.input.text = value; } // InputField.ContentType.Name が Name の場合、先頭文字が強制的大文字になるため小文字にして比べる if (instance.input.contentType == ContentType.Name) { if (string.Compare(instance.input.text, value, true) == 0) { value = instance.input.text; } } // InputField の ContentType による整形したテキストを HTML の input に再設定します if (value != instance.input.text) { var start = WebGLInputPlugin.WebGLInputSelectionStart(id); var end = WebGLInputPlugin.WebGLInputSelectionEnd(id); // take the offset.when char remove from input. var offset = instance.input.text.Length - value.Length; WebGLInputPlugin.WebGLInputText(id, instance.input.text); // reset the input element selection range!! WebGLInputPlugin.WebGLInputSetSelectionRange(id, start + offset, end + offset); } }