Aiuto Urgente please

Salve a tutti ragazzi, per prima cosa volevo fare i complimenti a tutti coloro che si occupano della gestione del sito e tutti quelli che puntualmente rispondono e aiutano.

Il mio problema è il seguente:

Sto facendo una piccola app che teoricamente inseriti i dati di login e password possa accedere all’interno dell app, il problema sta proprio in questo! ho fatto delle ricerche su internet senza trovare nulla a riguardo, volevo sapere come faccio a creare un campo per fare inserire una stringa di testo e/o numeri.

Vi ringrazio in anticipo per eventuali risposte e/o chiarimenti.

Ciao Salvo,

puoi usare un textfield nativo (native.newTextField) http://docs.coronalabs.com/api/library/native/newTextField.html

i passi da seguire sono semplicemente 3:

1- creare la funzione handler per l’evento di inserimento testo:

[lua]

local inputTextField

local function textHandler( event )
    if ( event.phase == “began” ) then
        – inizia a editare il text field
        print( event.text )
    elseif ( event.phase == “ended” or event.phase == “submitted” ) then
        – quando batti invio fai qualcosa… 
        print( "Testo inserito: " … event.target.text )
    elseif ( event.phase == “editing” ) then
        – quando editi fai qualcosa…
        print( event.newCharacters )
        print( event.oldText )
        print( event.startPosition )
        print( event.text )
    end
end

[/lua]

2 - creare il textfield

[lua]

inputTextField = native.newTextField( 100, 100, 300, 40 )

[/lua]

e infine aggiungere l’event listener

[lua]

inputTextField:addEventListener( “userInput”, textHandler )

[/lua]

Ricordati di rimuovere l’event listener quando esci dalla scena:

[lua]

inputTextField:removeEventListener( “userInput”, textHandler )

[/lua]

Spero ti torni utile.

Ale

Per prima cosa vorrei ringraziarti per avermi risposto, ma non capisco perchè non mi funzioni.

Appena inserisco il codice da te scritto mi spunta un rettangolo grigio ( penso creato da  inputTextField = native.newTextField( 200, 100, 300, 40 )), ma nel momento in cui provo a cliccare in qualsiasi parte dello schermo o appena provo a scrivere qualcosa non succede nulla.

Grazie ancora.

Ciao,

non ho capito se stai lavorando con una scena composer oppure no.

Nel caso non fosse così, se aggiungi l’ultima riga di codice rimuovi anche il listener e quindi non funziona.

Per cui, se non lavori con le scene aggiungi questo codice nel main.lua:

[lua]

local inputTextField
 
local function textHandler( event )
    if ( event.phase == “began” ) then
        – inizia a editare il text field
        print( event.text )
    elseif ( event.phase == “ended” or event.phase == “submitted” ) then
        – quando batti invio fai qualcosa…
        print( "Testo inserito: " … event.target.text )
    elseif ( event.phase == “editing” ) then
        – quando editi fai qualcosa…
        print( event.newCharacters )
        print( event.oldText )
        print( event.startPosition )
        print( event.text )
    end
end

inputTextField = native.newTextField( 200, 100, 300, 40 )

inputTextField:addEventListener( “userInput”, textHandler )

[/lua]

Dopodichè lancia Corona SDK da terminale e guarda l’output, vedrai stampato quello che digiti nel texfield (riquadro bianco/grigio).

Fammi sapere.

Ciao

Ale

Scusa ale ho inserito il codice da te postato ed ho provato ma non succede nulla.

Ho provato sia a cliccare su il riquadro grigio scrivendo una lettera e dando invio, sia a posizionare il mouse sopra il riquadro digitare un carattere e dare invio, ma nessuno di questi due modi visualizza caratteri e/o altro testo su Corona Simulator Output e nemmeno nel riquadro grigio su Corona Simulator. Comunque non sto lavorando con le scene.

Scusa se ti disturbo ancora essendo alle prime armi.

Salvo.

Ciao,

strano perchè da me funziona come puoi vedere dallo screenshot.

Probabilmente stai sbagliando qualcos’altro.

Guarda lo screenshot, poi eventualmente prova a postare il tuo codice in modo che possa capire cosa c’è di sbagliato.

dhb8ds.jpg

Ale

Ecco lo screenshot, spero che il fatto che tu utilizzi Mac Os e io utilizzi Windows non sia un problema.

Salvo

Ok, mi sembra corretto.

Mac-OS o Windows non fa differenza.

A questo punto dovresti cliccare sul rettangolino grigio, digitare qualcosa sulla tastiera, battere invio e vedere il risultato sul terminale.

Sicuramente le lettere che digiti devono comparire nel rettangolo!

Se invece lo hai già fatto e non vedi nulla credo che il problema non sia da ricercare nel codice ma nel setup di Corona sul tuo PC.

Ciao,

Ale

ora provo a reinstallarlo anche se penso non sia questo il problema, comunque è possibile perchè dispongo di una licenza starter?

Comunque ti ringrazio sempre per il tuo tempo.

Salvo

Ciao Salvo,

ok…allora, ho indagato un pò sulla cosa perchè mi sembrava strana, ed effettivamente native.newTextField NON è supportato dal simulatore Corona SDK su Windows!!

Purtroppo uso Corona su Mac-OS e quindi non avevo mai sperimentato la cosa :frowning:

Qui c’è un post che parla di questo problema:

http://forums.coronalabs.com/topic/44973-nativetextfield-help-on-windows/?hl=%2Bnative+%2Btextfield+%2Bin+%2Bwindows

C’è anche una nota sulla documentazione di Corona:

http://docs.coronalabs.com/daily/api/type/TextField/index.html

“Native text fields are only available in device builds and the Mac Simulator, not in the Windows Simulator.”

Adesso, puoi provare a compilare e portare tutto su il tuo device Android e li dovrebbe funzionare.

se invece vuoi provare ancora con il simulatore ho visto che hanno fatto un workaround, puoi scaricare questo pacchetto da GitHub:

https://github.com/ProGM/CoronaSDK-win-native

Poi, aggiungi al tuo progetto il file win_fix.lua che trovi nel pacchetto, dopodichè nel main.lua aggiungi in testa queste linee di codice:

[lua]

if "Win" == system.getInfo( "platformName" ) then require("win\_fix") end

[/lua]

Infine prova a far girare il tutto sul simulatore e dovrebbe funzionare (spero!).

Ciao,

Ale

FUNZIONAA non so davvero come ringraziarti!!! :slight_smile:

Grazie,

Salvo.

Ok, meglio così! :slight_smile:

Magari tornerà utile anche ad altri che sviluppano con Corona su Windows.

Ciao,

Ale

Ciao Salvo,

puoi usare un textfield nativo (native.newTextField) http://docs.coronalabs.com/api/library/native/newTextField.html

i passi da seguire sono semplicemente 3:

1- creare la funzione handler per l’evento di inserimento testo:

[lua]

local inputTextField

local function textHandler( event )
    if ( event.phase == “began” ) then
        – inizia a editare il text field
        print( event.text )
    elseif ( event.phase == “ended” or event.phase == “submitted” ) then
        – quando batti invio fai qualcosa… 
        print( "Testo inserito: " … event.target.text )
    elseif ( event.phase == “editing” ) then
        – quando editi fai qualcosa…
        print( event.newCharacters )
        print( event.oldText )
        print( event.startPosition )
        print( event.text )
    end
end

[/lua]

2 - creare il textfield

[lua]

inputTextField = native.newTextField( 100, 100, 300, 40 )

[/lua]

e infine aggiungere l’event listener

[lua]

inputTextField:addEventListener( “userInput”, textHandler )

[/lua]

Ricordati di rimuovere l’event listener quando esci dalla scena:

[lua]

inputTextField:removeEventListener( “userInput”, textHandler )

[/lua]

Spero ti torni utile.

Ale

Per prima cosa vorrei ringraziarti per avermi risposto, ma non capisco perchè non mi funzioni.

Appena inserisco il codice da te scritto mi spunta un rettangolo grigio ( penso creato da  inputTextField = native.newTextField( 200, 100, 300, 40 )), ma nel momento in cui provo a cliccare in qualsiasi parte dello schermo o appena provo a scrivere qualcosa non succede nulla.

Grazie ancora.

Ciao,

non ho capito se stai lavorando con una scena composer oppure no.

Nel caso non fosse così, se aggiungi l’ultima riga di codice rimuovi anche il listener e quindi non funziona.

Per cui, se non lavori con le scene aggiungi questo codice nel main.lua:

[lua]

local inputTextField
 
local function textHandler( event )
    if ( event.phase == “began” ) then
        – inizia a editare il text field
        print( event.text )
    elseif ( event.phase == “ended” or event.phase == “submitted” ) then
        – quando batti invio fai qualcosa…
        print( "Testo inserito: " … event.target.text )
    elseif ( event.phase == “editing” ) then
        – quando editi fai qualcosa…
        print( event.newCharacters )
        print( event.oldText )
        print( event.startPosition )
        print( event.text )
    end
end

inputTextField = native.newTextField( 200, 100, 300, 40 )

inputTextField:addEventListener( “userInput”, textHandler )

[/lua]

Dopodichè lancia Corona SDK da terminale e guarda l’output, vedrai stampato quello che digiti nel texfield (riquadro bianco/grigio).

Fammi sapere.

Ciao

Ale

Scusa ale ho inserito il codice da te postato ed ho provato ma non succede nulla.

Ho provato sia a cliccare su il riquadro grigio scrivendo una lettera e dando invio, sia a posizionare il mouse sopra il riquadro digitare un carattere e dare invio, ma nessuno di questi due modi visualizza caratteri e/o altro testo su Corona Simulator Output e nemmeno nel riquadro grigio su Corona Simulator. Comunque non sto lavorando con le scene.

Scusa se ti disturbo ancora essendo alle prime armi.

Salvo.

Ciao,

strano perchè da me funziona come puoi vedere dallo screenshot.

Probabilmente stai sbagliando qualcos’altro.

Guarda lo screenshot, poi eventualmente prova a postare il tuo codice in modo che possa capire cosa c’è di sbagliato.

dhb8ds.jpg

Ale

Ecco lo screenshot, spero che il fatto che tu utilizzi Mac Os e io utilizzi Windows non sia un problema.

Salvo

Ok, mi sembra corretto.

Mac-OS o Windows non fa differenza.

A questo punto dovresti cliccare sul rettangolino grigio, digitare qualcosa sulla tastiera, battere invio e vedere il risultato sul terminale.

Sicuramente le lettere che digiti devono comparire nel rettangolo!

Se invece lo hai già fatto e non vedi nulla credo che il problema non sia da ricercare nel codice ma nel setup di Corona sul tuo PC.

Ciao,

Ale

ora provo a reinstallarlo anche se penso non sia questo il problema, comunque è possibile perchè dispongo di una licenza starter?

Comunque ti ringrazio sempre per il tuo tempo.

Salvo