2013-09-24 173 views
19

我正在嘗試重新編譯iOS 7的應用程序,因爲迄今爲止沒有任何舊的工作。 許多問題之一是我在UIWebViews中使用了一些輸入。文本輸入,拾取等移動固定定位元素的iOS 7輸入元素

現在,當iOS 7閃亮的白色鍵盤出現時,網頁中的所有底部固定元素(例如確認按鈕)都會向上滾動,就好像虛擬鍵盤的「頂部」一樣是我的UIWebView的新底部。這與iOS6.x有着本質上不同的行爲

有沒有什麼魔術讓虛擬鍵盤行爲像過去一樣工作,而不向JSView注入JS/CSS?

回答

44

這解決了我的科爾多瓦應用程序的問題。我不確定它是否適用於您,但爲了以防萬一。

檢查你的HTML meta標籤這樣的事情:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"> 

這種替換:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" /> 
+0

很樂意幫忙!隨意接受答案,讓其他人可以看到:) – Opossum

+3

你有沒有嘗試過與景觀應用程序?在橫向上的「設備高度」仍然是1024,因此屏幕底部不在視野範圍內。 –

+0

我的應用程序旋轉到風景轉身時,我還沒有看到這個問題。如果我看到它,我會讓你知道。 – Opossum

6

我遇到一模一樣的問題&跑試驗後兩天就放棄了。看起來如下:a)所有底部固定元件向上,使得它們的底部偏移量相對於鍵盤的頂部邊緣 c)所有頂部固定的元件保持其原始位置(不要像以前那樣向上移動) - 請注意,頂級絕對元素正常工作。

我發現的唯一的解決辦法是有一個自定義的iPad樣式表替換絕對元素的所有固定元素,設置CSS bottom屬性,以汽車,採用自頂而不是

-1

Opposum,您的解決方案爲我工作,但只有當規模被設置爲1.0。如果我將它設置爲0.9,那麼它會像你之前建議的修復程序那樣。當鍵盤出現時,我將初始縮放比例,最大縮放比例和最小縮放比例設置爲0.9以及固定對象的彈跳效果。

+1

與meta的內容混在一起,似乎是最小規模問題。當被忽略時,存在定位問題。設置爲小於1.0的值時,存在已解決頭寸的問題。當設置爲大於或等於1.0的值時,解決了位置固定問題。 –

+0

這不是一個答案,而只是一個觀察;因此屬於一個音符。 – Lev

8

在我們這種情況下,只要用戶滾動,就會自行修復。因此,這是我們一直在使用模擬上blur滾動任何inputtextarea修復:

$(document).on('blur', 'input, textarea', function() { 
    setTimeout(function() { 
     window.scrollTo(document.body.scrollLeft, document.body.scrollTop); 
    }, 0); 
}); 
+0

強制像這樣的滾動對我有效。下面的視口修復*可以*工作,但也可能導致Cordova應用程序出現問題,其中width = device-width,height = device-height可能導致滾動問題。 https://issues.apache.org/jira/browse/CB-4323 – zungaphobia

+0

這個解決方案似乎是唯一一個不會破壞任何東西的解決方案。您也可以檢查用戶代理,將其限制爲僅限移動設備。 var is_mobile = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/ i); –