2012-05-16 21 views
8

Ich arbeite an einer kleinen App, die Sencha Touch 2 für die Benutzeroberfläche verwendet. Jetzt laufe ich es in Safari auf meinem iPad und iPhone.Bewegung der Benutzeroberfläche verhindern, wenn die Tastatur erscheint

Mein Problem ist, dass Safari jedes Mal, wenn ich auf ein Textfeld tippe, die virtuelle Tastatur aufruft und die gesamte Webansicht vom Bildschirm nach oben schiebt.

Dies sieht nicht sehr natürlich aus, da die obere Werkzeugleiste nicht mehr sichtbar ist.

Hier sind zwei Screenshots, die das Problem demonstrieren. Im zweiten Screenshot können Sie den Effekt sehen, wenn die Tastatur sichtbar ist.

Gibt es eine Möglichkeit, dieses Verhalten zu verhindern, und Safari Größe ändern die Benutzeroberfläche stattdessen?

Normal view


Keyboard enabled

+0

Haben Sie eine Lösung, um diese zu bekommen? –

+0

@AdilMalik: Nein, leider nicht – BastiBen

+0

Jedes Update über dieses dumme Problem ???? irgendeine Lösungsmöglichkeit ? –

Antwort

-1

Sie müssen die blur() Methode auf textfield

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

Versuche zu forcefully Unschärfe Eingabefokus für das Feld.

+0

Versteckt das nicht die Tastatur, da das Textfeld seinen Fokus verliert? Der Punkt ist, dass ich eigentlich möchte, dass die Tastatur da ist, aber ohne die Hälfte der Benutzeroberfläche vom Bildschirm geschoben. – BastiBen

+0

Was versuchen Sie zu erreichen? Halbe Tastatur + Ruhe deine halbe App ...? –

+0

Siehe die zwei Screenshots. Auf dem unteren Screenshot sehen Sie, dass die Tastatur die gesamte Benutzeroberfläche nach oben geschoben hat. Die obere Symbolleiste ist verschwunden. Ich möchte die Tastatur anzeigen, ohne dass die Benutzeroberfläche oben auf dem Bildschirm angezeigt wird. Stattdessen sollte es die Größe ändern. – BastiBen

-2

Wenn Sie diese HTML in Sencha Elemente verwenden müssen Sie etwas Tag HTML entfernen. Oder können Sie das Tag
in den Quell-HTML-Code setzen. Ich hoffe dir zu helfen. :)

+0

Sorry, ich bin mir nicht sicher, was du meinst. – BastiBen

+1

Können Sie etwas Code schreiben? und ich sage, wo ist der Fehler. Danke – hekomobile

4

Leider will Apple dieses Verhalten, aber someone schlug ein wenig Hack window.scrollTo():

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

Danke für diese Antwort!Es ist immer noch nicht perfekt, da der Benutzer die anfängliche Bewegung sehen kann, die direkt danach behoben wird. Außerdem funktioniert es gut. –

0

ich eine Lösung gefunden haben, die für mich funktioniert. Sie bewegen die Topbar in den Container.

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%' 
        } 
       ] 
      } 

Hoffe, das hilft.

1

Setzen Sie diesen Code in Start-Funktion in app.js für mich gearbeitet:

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); 
     }); 
    } 
Verwandte Themen