2012-05-16 7 views
8

Sto lavorando su una piccola app che utilizza Sencha Touch 2 per l'interfaccia utente. In questo momento lo sto eseguendo su Safari sul mio iPad e iPhone.Previene il movimento dell'interfaccia utente quando appare la tastiera

Il mio problema è che ogni volta che tocco un campo di testo, Safari apre la tastiera virtuale e spinge l'intera vista web verso l'alto, fuori dallo schermo.

Questo non sembra molto naturale, poiché la barra degli strumenti in alto non è più visibile.

Ecco due schermate che dimostrano il problema. Nella seconda schermata è possibile vedere l'effetto quando la tastiera è visibile.

C'è un modo per evitare questo comportamento e Safari ridimensionare l'interfaccia utente?

Normal view


Keyboard enabled

+0

Hai avuto una correzione a questo? –

+0

@AdilMalik: No, purtroppo non – BastiBen

+0

Qualche aggiornamento su questo problema sciocco ???? qualche soluzione? –

risposta

-1

Sarà necessario chiamare il metodo blur() su textfield

// Assuming the id of textfield - "textFieldId" 
Ext.getCmp('textFieldId').blur(); 

Tenti a forcefully sfocatura input focus per il campo.

+0

Non nasconde la tastiera, dato che il campo di testo perde il focus? Il punto è che in realtà voglio che la tastiera sia lì, ma senza la metà dell'interfaccia utente spinto fuori dallo schermo. – BastiBen

+0

Cosa stai cercando di ottenere? Mezza tastiera + riposa metà della tua app ...? –

+0

Vedere le due schermate. Nello screenshot inferiore puoi vedere che la tastiera ha sollevato l'intera interfaccia utente. La barra degli strumenti in cima è sparita. Voglio visualizzare la tastiera senza che spinga l'interfaccia utente nella parte superiore dello schermo. Invece dovrebbe ridimensionare. – BastiBen

-2

Se si utilizza html in elementi Sencha, è necessario rimuovere qualcosa tag html. Oppure puoi inserire il tag
nel codice html sorgente. Spero di aiutarti. :)

+0

Scusa, non sono sicuro di cosa intendi. – BastiBen

+1

Potresti scrivere qualcosa di codice? e dico dov'è l'errore. Grazie – hekomobile

4

Purtroppo, Apple vuole questo comportamento, ma someone suggerito un piccolo hack utilizzando window.scrollTo():

listeners: { 
    focus: function() { 
     window.scrollTo(0,0); 
    } 
} 
+0

Grazie per questa risposta!Non è ancora perfetto, poiché l'utente può vedere il movimento iniziale che viene corretto subito dopo. Inoltre funziona bene. –

0

ho trovato una soluzione che funziona per me. Sposta la barra superiore nel contenitore.

xtype: 'container', 
       docked: 'top', 
       height: '100%', 
       html: '', 
       itemId: 'MyContainer', 
       width: '100%', 
       items: [ 
        { 
         xtype: 'titlebar', 
         docked: 'top', 
         itemId: 'topBar', 
         title: 'Obec Webchat', 
         layout: { 
          type: 'hbox', 
          align: 'start' 
         }, 
         items: [ 
          { 
           xtype: 'button', 
           action: 'back', 
           id: 'BackButton', 
           itemId: 'BackButton', 
           margin: '5 70% 5 15', 
           ui: 'back', 
           text: 'Home' 
          } 
         ] 
        }, 
        { 
         xtype: 'container', 
         docked: 'bottom', 
         height: '95%', 
         html: '<iframe src="http://webim.obec.local/" width="100%" height="100%" scrolling="yes"></iframe>', 
         itemId: 'MyContainer1', 
         width: '100%' 
        } 
       ] 
      } 

Spero che questo aiuti.

1

Mettendo questo codice nella funzione di lancio nel app.js ha lavorato per me:

if (Ext.os.is.Android) { 
     Ext.Viewport.on('painted', function() { 
      Ext.Viewport.setHeight(window.innerHeight); 
     }); 
    } 

    if (Ext.os.is.iOS) { 

     Ext.Viewport.on('painted', function() { 
      Ext.Viewport.setHeight(window.innerHeight); 
     }); 
    }