2010-02-19 144 views
2

我是iPhone開發的初學者,希望有人能幫助我解決我的問題。iPhone鍵盤在UIWebView中隱藏字段

我有一個顯示網頁的UIWebView。如果用戶點擊網頁上的文本框,則彈出鍵盤。這很棒,但它隱藏了用戶點擊的字段。我環顧四周,找到代碼示例來處理這個問題,但沒有一個專門處理UIWebView。我已經實現了UIKeyboardDidShowNotification和UIKeyboardDidHideNotification,但不知道如何正確調整UIWebView的大小。我曾嘗試將UIWebView放在UIScrollView中,但沒有取得任何成功。下面的代碼似乎調整了UIWebView,但不會讓它滾動到該字段。

-(void) keyboardDidShow: (NSNotification *)notif{ 
    if (keyboardShown) return; 

    NSLog(@"Keyboard Show"); 
    NSDictionary *info = [notif userInfo]; 
    NSValue *aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey]; 
    CGSize keyboardSize = [aValue CGRectValue].size; 

    CGRect viewFrame = webBrowser.frame; 
    viewFrame.size.height -= keyboardSize.height; 
    webBrowser.frame = viewFrame; 
    keyboardShown = YES; 
} 

-(void) keyboardDidHide: (NSNotification *)notif{ 
    NSLog(@"Keyboard hide"); 
    keyboardShown = NO; 

} 

希望有人能幫助我或指出我的方向正確。

謝謝!

皮特

+0

您是否嘗試過實施JavaScript解決方案?當文本字段的焦點事件觸發時,您可以執行一個函數,該函數可平滑地向上滾動頁面以容納鍵盤。另請參閱 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)腳本 用於Objective-C/Javascript合作。 – 2010-03-27 01:33:55

回答

1

我想你需要更改視圖的中心位置,而不是它的高度,如果你想要做手工。也就是說,爲webBrowser.frame設置一個新的y位置,即減去keyboardSize.height。

0

如果將UIWebView的邊界縮小可以解決問題,您可以嘗試一下。

CGRect viewFrame = webBrowser.frame; 
viewFrame.size.height -= keyboardSize.height; 
webBrowser.bounds = viewFrame; 
1

,您可以撥打UIAnimation,將移動的UIWebView了鍵盤,然後用其委託打字的時候再拍UIAnimation是轉移到一個UIWebView移回原來的位置。