带有KeyboardShrinksView和HideKeyboardFormAccessoryBar的Phonegap 2.6

时间:2013-04-10 19:58:01

标签: ios cordova

我对2.6(ios)中的一个新的phonegap功能有问题,最后它们包含一个缩小webview以处理固定元素的选项。不幸的是,当HideKeyboardFormAccessoryBar选项设置为true时,会出现一个奇怪的白条而不是AccessoryView(请查看screenshot)。 当我将KeyboardShrinksView设置为false

时,不会发生这种情况

有没有人遇到过新版本的类似问题?这是一个错误还是一个功能? ;)

欢呼声 垒。

4 个答案:

答案 0 :(得分:5)

这是一个错误。这是因为在显示键盘后WebView没有正确调整大小。默认情况下,PhoneGap通过键盘高度减去视图框来调整WebView的高度。但是,它没有考虑表格附件栏隐藏在该计算中的事实。

这是一个临时解决方案,而PhoneGap修复了这个错误:

在CDVViewController.m中(在Classes / Cleaver下),转到第140行。它应该在(void)keyboardWilLShowOrHide函数内。在showEvent if语句中,它根据键盘的高度计算WebView的新大小。

将if语句的内容更改为:

if (showEvent) {
    newFrame.size.height -= keyboardFrame.size.height;
    if ([@"true" isEqualToString: self.settings[@"HideKeyboardFormAccessoryBar"]]) {
        newFrame.size.height += 45;
    }
}

我添加了一个额外的if语句,它还检查了HideKeyboardFormAccessoryBar配置。如果设置了它,它会将WebView的大小增加45个像素(表单附件栏的高度)。

答案 1 :(得分:1)

当键盘向上转换时,似乎webview已经调整大小并且背景为白色,从而导致显示白色背景。我的HTML正文背景是黑色的,所以当白色背景闪烁时它看起来很奇怪。有谁知道如何更新UIView的背景?

以慢动作再现问题的视频。 http://www.youtube.com/watch?v=iOjdxJuYp8c

谢谢!

汤姆

编辑:我可以通过将此代码添加到MainViewConetroller.m

来更改背景颜色
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.view.backgroundColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1];
}

答案 2 :(得分:0)

这绝对是个错误。几周后,phonegap开发团队将在2.7版本中修复此问题。

答案 3 :(得分:0)

我刚刚检查了我的代码,我有2.6并且已经存在此修复程序。但它不起作用,我仍然看到灰条与相同的条件。怎么会这样?

编辑:看起来我的一个队友做了这个修复并解决了这个问题。问题是,您仍然可以看到灰色空间,并且很快就会被删除。