2012-05-25 22 views
12

的黑條,我們從這裏借來的代碼去除黑下一個/上/完成從鍵盤吧:的PhoneGap:完全去除從iPhone鍵盤我們使用PhoneGap的開發我們的移動應用

https://stackoverflow.com/a/9276023/35364

該代碼的作用是找到黑條,作爲UIView對象,並調用其上的removeFromSuperview。

我們不熟悉iOS SDK/API。因此,雖然我們可以查看代碼並瞭解它在做什麼,但我們無法判斷它是否正確執行,或者如何改進。

我們會碰到的特定問題:

我們有一個文本字段,編寫信息,我們正在手動控制這一領域的佈局是完全相同的鍵盤上方,類似於天然短信應用程序。換句話說,我們把它放在黑吧應該在的地方。

當我們關注/輸入消息字段時,系統會將視圖向上推。看起來這是一種機制,可以確保用戶輸入文本字段時不會看不到。

即使文本字段可見,也會發生這種情況。

我注意到,通過將輸入字段置於黑色條通常所在的位置之上(與其背後相反),視圖不會滾動。

所以看起來系統在某種程度上認爲黑條仍然存在! (要仔細檢查:當黑條未被刪除,並且我們把文本字段放在它的正上方時,我們可以對其進行對焦和輸入,並且視圖不會滾動)。

所以,問題是:

爲什麼出現「系統」按內容編輯的文本字段,其正確的地方在黑條應該是「幕後黑手」的時候?是因爲黑條還沒有完全去除?我們需要做些什麼來「完全」移除黑條嗎?我們是否需要強制iOS重新計算鍵盤的大小?或究竟是什麼?

這是iOS的UIWebView或Phonegap實現的機制(向上推視圖)嗎?

有沒有解決這個問題的phonegap應用程序?

回答

9

更換

[subviewWhichIsPossibleFormView removeFromSuperview]; 

UIScrollView *webScroll = [webView.subviews lastObject]; 
CGRect newFrame = webScroll.frame; 

float accesssoryHeight = subviewWhichIsPossibleFormView.frame.size.height; 
newFrame.size.height += accesssoryHeight; 

[subviewWhichIsPossibleFormView removeFromSuperview]; 
[webScroll setFrame:newFrame]; 

它調整爲附件缺少空間量的內容滾動視圖。它與其他代碼一樣使用「私有API」。詳細而言,它並不直接使用私有API,但如果Apple決定更改視圖的顯示方式(在這種情況下爲鍵盤和WebView),則會崩潰。
例如,如果他們重命名爲UIWebFormAccessory,您的代碼將不再工作。

編輯:
在iOS 5上。0+,你可以直接撥打webView.scrollView。所以,你可以分裂的代碼有一個預先的iOS 5回退:

UIScrollView *webScroll; 
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) { 
    webScroll = webView.scrollView; 
} else { 
    webScroll = [webView.subviews lastObject]; // iOS 2.x (?) - 4.x 
    // make sure this code runs appropriate on older SDKs 
} 
+0

謝謝,這聽起來像它可能工作: - 0,而不是用下面的編輯你的配置XML文件。有一件事,雖然我不確定'webb'應該是什麼。我試過'UIScrollView * webScroll = [self.webView.subviews lastObject];'但這似乎不起作用。 – hasen

+0

ups是啊,這是我的臨時webView,'IBOutlet'。但它應該像你嘗試一樣工作。請'NSLog(%@,self.webView.subviews)'。也許你有更多的子視圖,我只有一個(scrollView) – 2012-05-30 00:18:34

+0

我認爲'self.webView.scrollView'也應該工作。 – hasen

相關問題