void Start () {
inputField = gameObject.GetComponent<TMP_InputField>();
inputField.onEndEdit.AddListener(EndEdit);
inputField.onValueChanged.AddListener(Editing);
inputField.onTouchScreenKeyboardStatusChanged.AddListener(ReportChangeStatus);
}
private void ReportChangeStatus(TouchScreenKeyboard.Status newStatus) {
if (newStatus == TouchScreenKeyboard.Status.Canceled)
keepOldTextInField = true;
}
private void Editing(string currentText) {
oldEditText = editText;
editText = currentText;
}
private void EndEdit(string currentText) {
if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText)) {
editText = oldEditText;
inputField.text = oldEditText;
keepOldTextInField = false;
}
}
Cevap için teşekkürler. Bu kodu çok denedim ama yapamadım. Sürekli hata alıyorum bundaBu şekilde dener misiniz? Event listener ekleyerek yazılan her harfte veriyi güncelliyoruz ve edit işlemi bittiğinde güncel veriyi input field içerisine ekliyoruz. Bu scripti input field'i bulunduran objeye verin.C#:void Start () { inputField = gameObject.GetComponent<TMP_InputField>(); inputField.onEndEdit.AddListener(EndEdit); inputField.onValueChanged.AddListener(Editing); inputField.onTouchScreenKeyboardStatusChanged.AddListener(ReportChangeStatus); } private void ReportChangeStatus(TouchScreenKeyboard.Status newStatus) { if (newStatus == TouchScreenKeyboard.Status.Canceled) keepOldTextInField = true; } private void Editing(string currentText) { oldEditText = editText; editText = currentText; } private void EndEdit(string currentText) { if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText)) { editText = oldEditText; inputField.text = oldEditText; keepOldTextInField = false; } }
Pressing back button on Android to close/hide the keyboard is clearing my input field Unity
I have two methods that fire the Unity Event for that input field, I'm trying to save the input field value into a variable and then give that value back to Input Field when back button is pressed,...stackoverflow.com
Hatayı gönderebilir misin? Yardımcı olayım.Cevap için teşekkürler. Bu kodu çok denedim ama yapamadım. Sürekli hata alıyorum bunda
Hatayı gönderebilir misin? Yardımcı olayım.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class input : MonoBehaviour
{
private InputField inputField;
void Start()
{
inputField = gameObject.GetComponent<InputField>();
inputField.onEndEdit.AddListener(EndEdit);
inputField.onValueChanged.AddListener(Editing);
inputField.onTouchScreenKeyboardStatusChanged.AddListener(ReportChangeStatus);
}
private void ReportChangeStatus(TouchScreenKeyboard.Status newStatus)
{
if (newStatus == TouchScreenKeyboard.Status.Canceled)
keepOldTextInField = true;
}
private void Editing(string currentText)
{
oldEditText = editText;
editText = currentText;
}
private void EndEdit(string currentText)
{
if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText))
{
editText = oldEditText;
inputField.text = oldEditText;
keepOldTextInField = false;
}
}
void Update()
{
}
}
Bu şekilde dener misiniz? Event listener ekleyerek yazılan her harfte veriyi güncelliyoruz ve edit işlemi bittiğinde güncel veriyi input field içerisine ekliyoruz. Bu scripti input field'i bulunduran objeye verin.C#:void Start () { inputField = gameObject.GetComponent<TMP_InputField>(); inputField.onEndEdit.AddListener(EndEdit); inputField.onValueChanged.AddListener(Editing); inputField.onTouchScreenKeyboardStatusChanged.AddListener(ReportChangeStatus); } private void ReportChangeStatus(TouchScreenKeyboard.Status newStatus) { if (newStatus == TouchScreenKeyboard.Status.Canceled) keepOldTextInField = true; } private void Editing(string currentText) { oldEditText = editText; editText = currentText; } private void EndEdit(string currentText) { if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText)) { editText = oldEditText; inputField.text = oldEditText; keepOldTextInField = false; } }
Pressing back button on Android to close/hide the keyboard is clearing my input field Unity
I have two methods that fire the Unity Event for that input field, I'm trying to save the input field value into a variable and then give that value back to Input Field when back button is pressed,...stackoverflow.com
Hocam hataları gönderecektiniz? Kodlarınızda bir anormallik gözükmüyor.Öncelikle yaptım işlemleri anlatayım. Bu kodları bir script dosyasına atıyorum.
Merhaba önce kodlarımı göndereyim. Yanlışlık var mı acaba? Benim ki TMP değil orayı düzelttim.
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class input : MonoBehaviour { private InputField inputField; void Start() { inputField = gameObject.GetComponent<InputField>(); inputField.onEndEdit.AddListener(EndEdit); inputField.onValueChanged.AddListener(Editing); inputField.onTouchScreenKeyboardStatusChanged.AddListener(ReportChangeStatus); } private void ReportChangeStatus(TouchScreenKeyboard.Status newStatus) { if (newStatus == TouchScreenKeyboard.Status.Canceled) keepOldTextInField = true; } private void Editing(string currentText) { oldEditText = editText; editText = currentText; } private void EndEdit(string currentText) { if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText)) { editText = oldEditText; inputField.text = oldEditText; keepOldTextInField = false; } } void Update() { } }
Bu kodlar çok eski bazıları çalışmıyor.
Sorunum devam ediyor. Ücretli olarak yardımcı olmak isteyen varsa bana ulaşabilir. Çünkü bu sorundan kurtulmak istiyorum artık.
Dostum şuan askerdeyim bilgisayar icin zaman bulursam hataları göndercem. İlgilendiğin icin sağolHocam hataları gönderecektiniz? Kodlarınızda bir anormallik gözükmüyor.
Tekrardan merhaba Irak'taydım yeni gelebildim. Sorun nerede acabaHocam hataları gönderecektiniz? Kodlarınızda bir anormallik gözükmüyor.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class inputScript : MonoBehaviour
{
private InputField inputField;
private string oldEditText = "";
private string editText = "";
private bool keepOldTextInField = false;
void Start()
{
inputField = GameObject.Find("userIDBox").GetComponent<InputField>();
inputField.onEndEdit.AddListener(EndEdit);
inputField.onValueChanged.AddListener(Editing);
}
private void Editing(string currentText)
{
oldEditText = editText;
editText = currentText;
}
private void EndEdit(string currentText)
{
if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText))
{
editText = oldEditText;
inputField.text = oldEditText;
keepOldTextInField = false;
}
}
void Update()
{
}
}
Aşağıdaki if şartını kaldırınca kod çalışmaya başladı.Dostum şuan askerdeyim bilgisayar icin zaman bulursam hataları göndercem. İlgilendiğin icin sağol
Tekrardan merhaba Irak'taydım yeni gelebildim. Sorun nerede acaba
@kaan.w kodları aşağıdaki gibi değiştirdim. Şuan hata almıyorum. Ama kod çalışmıyor. Telefonda input içine bişe yazıp geri tuşuna basınca gene siliniyor
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class inputScript : MonoBehaviour { private InputField inputField; private string oldEditText = ""; private string editText = ""; private bool keepOldTextInField = false; void Start() { inputField = GameObject.Find("userIDBox").GetComponent<InputField>(); inputField.onEndEdit.AddListener(EndEdit); inputField.onValueChanged.AddListener(Editing); } private void Editing(string currentText) { oldEditText = editText; editText = currentText; } private void EndEdit(string currentText) { if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText)) { editText = oldEditText; inputField.text = oldEditText; keepOldTextInField = false; } } void Update() { } }
Editing kısmı çalışıyor ama EndEdit kısmı çalışmıyor.
if (keepOldTextInField && !string.IsNullOrEmpty(oldEditText)) {}
Şöyle bişe var. Geri tuşuna basınca sorunsuz çalışıyor. Ama ekrana tıklayınca son karakteri yazmıyor.Kusura bakmayın geç gördüm. Sorun çözüldü değil mi?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class inputScript : MonoBehaviour
{
private InputField inputField;
private string oldEditText = "";
private string editText = "";
private bool keepOldTextInField = false;
void Start()
{
inputField = GameObject.Find("userIDBox").GetComponent<InputField>();
inputField.onEndEdit.AddListener(EndEdit);
inputField.onValueChanged.AddListener(Editing);
}
private void Editing(string currentText)
{
oldEditText = editText;
editText = currentText;
Debug.Log("editing çalışıyor");
}
private void EndEdit(string currentText)
{
editText = oldEditText;
inputField.text = oldEditText;
keepOldTextInField = false;
Debug.Log("EndEdit çalışıyor");
}
void Update()
{
}
}
Evet biraz inceledim fakat son harfi silmesine bir mantık bulamadım. Büyük ihtimal onValueChanged eventi ile alakalı ancak çözemedim.Şöyle bişe var. Geri tuşuna basınca sorunsuz çalışıyor. Ama ekrana tıklayınca son karakteri yazmıyor.
Örnek veriyorum. Elma yazdım geri tuşuna bastım Elma'yı yazıyor. Ama ekrana tıklayıp klavyeyi kapatınca "Elm" yazıyor.
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class inputScript : MonoBehaviour { private InputField inputField; private string oldEditText = ""; private string editText = ""; private bool keepOldTextInField = false; void Start() { inputField = GameObject.Find("userIDBox").GetComponent<InputField>(); inputField.onEndEdit.AddListener(EndEdit); inputField.onValueChanged.AddListener(Editing); } private void Editing(string currentText) { oldEditText = editText; editText = currentText; Debug.Log("editing çalışıyor"); } private void EndEdit(string currentText) { editText = oldEditText; inputField.text = oldEditText; keepOldTextInField = false; Debug.Log("EndEdit çalışıyor"); } void Update() { } }
@kaan.w bakabildiniz mi kodlara