iPhone键盘隐藏UIWebView中的字段

时间:2010-02-19 03:33:34

标签: iphone objective-c iphone-sdk-3.0 uiwebview

我是iPhone开发的初学者,我希望有人可以帮我解决我的问题。

我有一个显示网页的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;

}

希望有人可以帮助我或指出我正确的方向。

谢谢!

皮特

3 个答案:

答案 0 :(得分:1)

如果你想手动完成,我认为你需要改变视图的中心位置而不是它的高度。也就是说,为webBrowser.frame设置一个新的y位置,即减去keyboardSize.height。

答案 1 :(得分:1)

您可以创建一个UIAnimation,它将使用键盘移动UIWebview,然后在键入结束时使用其委托创建另一个UIAnimation,以将UIWebview移回原始位置。

答案 2 :(得分:0)

你可以尝试将UIWebView的边界缩小以解决问题。

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