2013-10-08 92 views
2

我在Sencha Touch 2中遇到了textfield問題,這隻發生在iOS 7中,並且在iOS 6和Android中正常工作。Sencha Touch 2 textfield在iOS 7中的焦點問題

問題是,當您點擊一個字段,鍵盤打開但光標消失時,它應該專注於選定的文本字段,但它不會。你必須再次點擊文本框才能關注。

我在iOS 6和android(在設備上以及在模擬器上)檢查了這個問題,工作正常,但不是僅在iOS 7上。

有人有這個問題嗎?

這是一個sencha中的錯誤,或者我應該丟失一些東西,請指教。

謝謝。

+0

我在某些情況下似乎有同樣的問題。 –

+0

如果我給面板提供高度(在我的代碼中給出了設備高度),那麼它的工作原理是正常的...但是當文本字段(小鍵盤)打開時,在鍵盤下出現的文本字段將再次失去焦點... – Avin

+0

這工作對我來說:https://stackoverflow.com/a/19182670/6347279 –

回答

0

我發現這直接關係到兩兩件事:

  1. centered: true
  2. pack: 'center'

當我刪除這些行,我的應用程序啓動打得好。面臨的挑戰是找到一種替代面板居中的方法。

0

我花了幾天的時間搞清楚這一點。實際上Sencha理解ViewPort高度存在問題。在您的index.html添加腳本塊用下面的代碼

if (window.device && parseFloat(window.device.version) == 7.0) { 
    document.body.style.paddingTop = "20px"; 
    Ext.Viewport.setHeight(Ext.Viewport.getWindowHeight() - 20); 
} 

這做了兩件事你

  1. 它放到最上面提供了足夠的空間,以顯示活動吧
  2. 它集視窗高度爲屏幕高度,不管鍵盤是否存在。

另外,如果您的應用程序在縱向和橫向模式下工作,你需要在你的Viewport.js(或Main.js)

initialize: function(){ 
    Ext.Viewport.on('orientationchange', 'handleOrientationChange', this, {buffer: 0 }); 
}, 

handleOrientationChange: function(){ 
    try{ 
      if (parseFloat(window.device.version) == 7.0) { 
      Ext.Viewport.setHeight(Ext.Viewport.getWindowHeight() - 20); 
      }else{ 
      Ext.Viewport.setHeight(Ext.Viewport.getWindowHeight()); 
      } 
     }catch(e){ 
       // do nothing 
     } 
}, 

添加這些行,是的,確保他們的鍵盤反彈是真實的(如果你正在使用科爾多瓦)。這將確保你的領域不被隱藏。

希望這對你有用。