Page 1 sur 1

[Résolu] N'autoriser que les chiffres et le point

Publié : 19 Oct 2019 18:08
par altozinzin
Et oui, c'est encore moi.
Bonjour.

Je voudrais faire en sorte qu'on ne puisse rentrer dans mon InputField que les chiffres de 0 à 10, ainsi que le point.

Cependant le Input.GetKey ne semble pas fonctionner sous Android. J'ai essayé différents KeyCode.
Voici mon code:

Code : Tout sélectionner

 public void Verification_clavier(InputField Case_active)
    {
       
        // on regarde si on la touche pressée est autorisée
      
        if (Input.GetKey(KeyCode.Keypad1) || Input.GetKey(KeyCode.Alpha1) || Input.GetKey("1"))
        { 
        Debug.Log("ca marche"); 
        }
                    
        
        else
        {
            Debug.Log("ca ne marche pas");
           
        }
        }
et bien sur, le résultat est un "ca ne marche pas".
Merci à la communauté!

Re: N'autoriser que les chiffres et le point

Publié : 20 Oct 2019 22:47
par altozinzin
En attendant, je fais ça, mais je ne trouve pas ça très propre.

Code : Tout sélectionner

   if (Case_active.text[Case_active.text.Length-1] == '0' || Case_active.text[Case_active.text.Length - 1] == '1' || Case_active.text[Case_active.text.Length - 1] == '2' || Case_active.text[Case_active.text.Length - 1] == '3' || Case_active.text[Case_active.text.Length - 1] == '4' || Case_active.text[Case_active.text.Length - 1] == '5' || Case_active.text[Case_active.text.Length - 1] == '6' || Case_active.text[Case_active.text.Length - 1] == '7' || Case_active.text[Case_active.text.Length - 1] == '8' || Case_active.text[Case_active.text.Length - 1] == '9' || Case_active.text[Case_active.text.Length - 1] == '.')
        { }
        
        else
        {
            Case_active.text = Case_active.text.Substring(0, Case_active.text.Length - 1);
	 }

Re: N'autoriser que les chiffres et le point

Publié : 21 Oct 2019 10:03
par Alesk
Salut,

Une piste ici : https://forum.unity.com/threads/ui-inpu ... rs.267488/

Ce qui donne ce bout de code à assigner à ton inputField:

Code : Tout sélectionner

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(InputField))]
public class RestrictInputField : MonoBehaviour
{

    public string restriction = "0123456789.";
    private InputField field;

    void Awake(){
        field = GetComponent<InputField>();
    }

    private char RestrictToNumber (string text, int charIndex, char addedChar){
        if(restriction.IndexOf(addedChar)<0){
            return (char)0;
        }else{
            return addedChar;
        }
    }
    void OnEnable(){
        field.onValidateInput += RestrictToNumber;
    }

    void OnDisable(){
        field.onValidateInput -= RestrictToNumber;
    }
}


Re: N'autoriser que les chiffres et le point

Publié : 21 Oct 2019 19:04
par altozinzin
Merci beaucoup. C'est nickel :-) Pile ce que je cherchais.
Merci à toi et à la communauté !!

Re: [Résolu] N'autoriser que les chiffres et le point

Publié : 25 Oct 2019 09:11
par boubouk50
Il est possible d'initialiser directement l'inputField avec une validation décimale. C'est déjà fait:
https://docs.unity3d.com/2017.3/Documen ... cimal.html
L'impossibilité de mettre plusieurs '.' semble ne pas être pris en compte, mais cela peut être vérifié d'après ce lien:
https://answers.unity.com/questions/978 ... point.html