2011-06-10 75 views
3

我有一個UITabViewController設置了兩個選項卡,第二個選項卡包含一個Web瀏覽器。除非我在第一個標籤中首先顯示並解除UIAlertView,否則鍵盤不會出現在我的應用程序中。什麼可能是錯的?在UIWebView中點擊文本框時不顯示鍵盤

回答

10

已解決;我不小心刪除:

[window makeKeyAndVisible]; 
+1

添加這個解決了我的問題:) – nilamo 2011-08-12 13:09:01

+0

該死的我一直在敲我的頭對鍵盤整個上午,這是它,謝謝! – boliva 2011-11-16 19:29:28

+0

但是[myWebView.window makeKeyAndVisible]; din't幫助我:( – Dmitry 2012-08-08 16:48:56

2

不是很多,但如果你有可視化顯示的文本字段,但它不會觸發鍵盤時,最有可能你有焦點問題,即包含文本字段的視圖不相信它應該攔截水龍頭。這通常是因爲另一個視圖在視覺上位於包含文本字段的視圖的前面(在邏輯視圖層次結構的下面)。據推測,顯示並解散警報會改變視圖層次結構並讓文本框截取水龍頭。

這就是我會先檢查的。

3

這裏提到的解決方案並不適合我。我有一個持續的錯誤,似乎是iOS的問題,或者至少是我的編譯設置。我想出了a workaround。如果你仍然像我一樣卡住,試試這個。我認爲它會起作用。這是簡單的。看看我的帖子,如果你需要更多的細節。

要把它放到你的web視圖的委託:

- (BOOL)webView:(UIWebView *)v shouldStartLoadWithRequest:(NSURLRequest *)r navigationType:(UIWebViewNavigationType)t { 

    NSString *requestString = [[r URL] absoluteString]; 

    if ([requestString hasPrefix: @"yourURLPrefix:"]) { 
     if ([requestString hasPrefix: @"yourURLPrefix:keyboardFix"]) { 
      [v.window makeKeyAndVisible]; 
     } 
} 

將這個變成你需要可靠的調出鍵盤輸入任何元素的onfocus事件處理程序:

document.location = "yourURLPrefix:keyboardFix"; 
+0

但如何訪問故事板上的UIWebView的窗口? – Dmitry 2012-08-08 16:57:24

+0

我收集,你不知道哪個UIWindow與你的UIWebView關聯...抱歉,如果我誤解了你,我會在我的答案中給你提供一個代碼片段,我沒有測試它,但是我確定它會工作 – benlozano 2012-08-08 18:19:47

+0

benlozano,謝謝你的回答!我試過'[myWebView.window makeKeyAndVisible] '但鍵盤不出現:( – Dmitry 2012-08-08 18:30:25

0

我發現[ (窗口)makeKeyAndVisible]在這裏做了詭計。

如果您正在嘗試使用makeKeyAndVisible並且它看起來沒有做任何事情,很可能您將該消息發送給空對象 - 這就是我遇到的情況。使用NSLog()來檢查將要發送該消息的窗口的標識。

一旦我找到正確的窗口對象,它工作正常。

相關問題