如何在iOS上使用Cordova 3.1修复键盘问题



我刚刚用一个示例iOS应用程序测试了Cordova 3.1,遇到了几个键盘问题。

应用设置:

  • Xcode 5
  • 状态栏处于隐藏状态
  • 横向模式

配置.xml

问题:

  1. 所有版本:当焦点在输入字段上时,整个视图被上推,包括导航栏。

  2. iOS5/6:点击输入字段打开键盘,然后在键盘向上推整个视图之前,屏幕顶部短暂显示一个黑色间隙(是状态栏吗?

  3. iOS7:没有像#2那样的黑差距问题,但还有其他问题:

    • 在删除(隐藏)之前,我仍然看到配件栏。

    • 键盘是半透明的,然后我可以在当前视图被推高的空间中看到较暗的背景。

如果我改变了,情况会更糟:

  • 视图仍然被推高,当输入字段失去焦点时,屏幕顶部会闪烁一个黑色间隙,即使在iOS 7上也是如此,如果KeyboardShrinksView = false不会发生。

  • 键盘在 iOS 7 上不再是半透明的。

以下是我的配置.xml

<preference name="DisallowOverscroll" value="true" />
    <preference name="HideKeyboardFormAccessoryBar" value="true" />
    <preference name="KeyboardDisplayRequiresUserAction" value="false" />
    <preference name="KeyboardShrinksView" value="true" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="TopActivityIndicator" value="gray" />
    <preference name="EnableLocation" value="false" />
    <preference name="EnableViewportScale" value="false" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="ShowSplashScreenSpinner" value="false" />
    <preference name="MediaPlaybackRequiresUserAction" value="false" />
    <preference name="AllowInlineMediaPlayback" value="false" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="Fullscreen" value="true" />
    <preference name="Orientation" value="landscape" />

查看此线程。 这里报告了很多相同的问题。 最好将您的信息添加到 Cordova JIRA 错误跟踪系统中,因为这是所有 cordova 开发人员工作的地方。https://issues.apache.org/jira/browse/CB-3020?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13769996#comment-13769996

我能够通过在 Web 视图的调整大小中添加一个简单的动画来获得顶部标题。 这是放在CDViewController.m的keyboardWillShow函数中的代码

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[self.webView setFrame:(CGRectMake(newFrame.origin.x, newFrame.origin.y, newFrame.size.width, newFrame.size.height))];
[UIView commitAnimations];

我差点把黑条从隐藏中弄出来,但无法让它很好地工作。 这篇文章描述了你需要做什么。 您需要使 Web 视图调整大小动画与键盘动画相匹配。iOS 7 - 键盘动画

最新更新