【问题标题】:iPhone Keyboard hiding fields in UIWebViewiPhone键盘在UIWebView中隐藏字段
【发布时间】:2010-02-19 03:33:34
【问题描述】:

我是 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;

}

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

谢谢!

皮特

【问题讨论】:

  • 您是否尝试过实施 JavaScript 解决方案?当文本字段的焦点事件触发时,您可以执行一个函数,该函数将平滑地向上滚动页面以适应键盘。另请参阅 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script for Objective-C/Javascript 合作。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果缩小 UIWebView 的边界是否可以解决问题,您可以尝试。

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

      【讨论】:

        猜你喜欢
        • 2011-01-19
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        • 2014-04-10
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        • 2011-04-28
        相关资源
        最近更新 更多