Cordova Phonegap 表单输入框在 iOS 上不起作用

Posted

技术标签:

【中文标题】Cordova Phonegap 表单输入框在 iOS 上不起作用【英文标题】:Cordova Phonegap Form Input box not working on iOS 【发布时间】:2016-12-05 15:03:45 【问题描述】:

无法在 ios 的输入表单框中输入文本(键盘未显示)。输入框似乎没有响应,因为没有显示提示,也没有启动键盘(APP)。这适用于 Cordova android(模拟器和 APP)以及 OSX、Android 和 iOS 上的每个标准浏览器。

<html>
<head>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: ; style-src 'self' 'unsafe-inline' ; media-src *;script-src 'self' 'unsafe-inline' 'self' *" />
<title>Input Test</title>
</head>
<body>
<form name="form1" id="form1">
<input name="auto" type="text" id="idauto" style="-webkit-user-select: auto;"><br>
<input name="text" type="text" id="idtext" style="-webkit-user-select: text;"><br>
<input class="newinput" onclick="this.focus();" type="email" id="mix" name="email" value="" autocorrect="off" autocapitalize="off" required="" placeholder="Enter E-mail address">
</form>
<script src="cordova.js"></script>
</body>
</html>

*** 也只尝试了 1 个输入,结果相同,因此表明多个变体的作用相同。

科尔多瓦:6.3.1

模拟器:iPhone-SE,10.1模拟器(通过iTunes Connect验证实际iOS APP中的行为相同,所以坚持使用模拟器尝试修复)。

我的 Cordova config.xml 首选项是:

<preference name="permissions" value="none" />
<preference name="webviewbounce" value="false" />
<preference name="detect-data-types" value="true" />
<preference name="stay-in-webview" value="false" />
<preference name="android-minSdkVersion" value="16" />
<preference name="android-targetSdkVersion" value="22" />
<preference name="loadUrlTimeoutValue" value="700000" />
<preference name="SplashScreenDelay" value="2000" />
<preference name="SplashScreen" value="screen" />
<preference name="StatusBarOverlaysWebView" value="false"/>
<preference name="StatusBarBackgroundColor" value="#000000"/>
<preference name="StatusBarStyle" value="lightcontent" />

<!-- iOS only preferences -->
<preference name="AppendUserAgent" value="My Browser" />
<preference name="AllowInlineMediaPlayback" value="true"/>
<preference name="BackupWebStorage" value="local"/>
<preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" />
<preference name="deployment-target" value="7.0" />
<preference name="EnableViewportScale" value="true"/>
<preference name="ErrorUrl" value="myErrorPage.html"/>
<preference name="GapBetweenPages" value="0"/>
<preference name="MediaPlaybackAllowsAirPlay" value="false"/>
<preference name="MediaPlaybackRequiresUserAction" value="true"/>
<preference name="OverrideUserAgent" value="Mozilla/5.0 My Browser" />
<preference name="PageLength" value="0"/>
<preference name="PaginationBreakingMode" value="page"/>
<preference name="PaginationMode" value="unpaginated"/>
<preference name="SuppressesIncrementalRendering" value="true"/>
<preference name="SuppressesLongPressGesture" value="true" />
<preference name="Suppresses3DTouchGesture" value="true" />
<preference name="target-device" value="universal" />
<preference name="TopActivityIndicator" value="white"/>
<preference name="UIWebViewDecelerationSpeed" value="fast" />

Cordova 插件(安装是因为此示例是来自一个更大项目的 sn-p)。

cordova-plugin-device 1.1.3 "Device"
cordova-plugin-facebook4 1.7.4 "Facebook Connect"
cordova-plugin-splashscreen 2.1.0 "Splashscreen"
cordova-plugin-statusbar 2.2.0 "StatusBar"
cordova-plugin-whitelist 1.1.0 "Whitelist"

【问题讨论】:

应该在 head @Eric 谢谢,但这并没有解决我的问题。 【参考方案1】:

Suppresses3DTouchGesture 禁用 onclick 处理程序,从而有效地禁用输入框。

要修复,请删除首选项或将其设置为“false”

<preference name="Suppresses3DTouchGesture" value="false" />

【讨论】:

以上是关于Cordova Phonegap 表单输入框在 iOS 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 8 上的 Cordova / PhoneGap 应用程序中隐藏键盘表单附件栏? [复制]

Phone Gap 中的输入字段表单问题

IOS/android + phonegap/cordova框架中的返回键

Cordova/Phonegap iOS - 应用程序发送到后台后更改了 html5 输入文本类型

[Cordova/Phonegap] Cordova iOS 应用在第三方输入法的键盘弹出(点击输入框)时,页面不上移,导致输入框被键盘遮挡 的解决办法

闪烁的光标! Cordova/Phonegap IOS