热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

蓝牙键盘在Flutterwebview上不起作用。(iOS+硬件键盘)

我们开发了一个应用程序,我们需要在其中打开一个WebView来向用户显示一个文本编辑器。用户与编辑器交互后,我们需要从URL中获取一些数据。为了显示WebView,

我们开发了一个应用程序,我们需要在其中打开一个 WebView 来向用户显示一个文本编辑器。用户与编辑器交互后,我们需要从 URL 中获取一些数据。

为了显示 WebView,我们使用包 webview_flutter: ^2.0.8,问题是一些用户想要将他们的蓝牙键盘连接到他们的设备,而 webview 部分无法识别 iOS 上的蓝牙键盘。

首先,我们认为这是由于蓝牙的一些许可,但显然事实并非如此,因为我们添加了这些许可并且没有任何变化,除此之外,文本字段和文本编辑器在应用程序的其他部分完美运行,问题仅在iOS上运行的webview上。

由于我们需要 URL 数据,我按照此链接中描述的步骤操作。然后我以与本示例中所做的类似的方式将 webview 作为模式打开,但无论如何它无法识别键盘。

我尝试的下一件事是将FlutterViewController包装在UINavigationController 中,以便我可以导航到我创建的WebViewController,但是当执行此行时:

让控制器: FlutterViewCOntroller= window?.rootViewController as!颤振视图控制器

触发此错误:

无法将“UINavigationController”(0x11732c8f0)类型的值转换为“FlutterViewController”(0x111370520)。

我是 Swift/iOS 的新手,所以我不知道如何解决这个问题。

有没有一种方法来实例或获取BinaryMessengerFlutterViewController创造FlutterMethodChannel

您知道以不同方式打开 webview 的包吗?因为我也尝试过其他包,但显然它们都和 webview_flutter 做的一样,也就是说,他们使用的UiKitView那个对我来说不适合这个问题。

这里有一个 repo,我尝试解决这个问题:https : //github.com/jorgesarabia/flutter_hc_webview_example

谢谢!

回答

在这个 PR 中github错误已修复,但尚未发布。

您可以使用此临时解决方案(在您的 IOS 项目文件中ios/Runner/AppDelegate.swift):

extension FlutterViewController {
open override func pressesBegan(_ presses: Set, with event: UIPressesEvent?) {
super.pressesBegan(presses, with: event)
} open override func pressesEnded(_ presses: Set, with event: UIPressesEvent?) {
super.pressesEnded(presses, with: event)
} open override func pressesCancelled(_ presses: Set, with event: UIPressesEvent?) {
super.pressesCancelled(presses, with: event)
}
}






推荐阅读
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 在 openSUSE Tumbleweed 系统上搭建 51 单片机开发环境并进行编程实践。首先,通过 `sudo zypper in emacs` 命令安装文本编辑器 Emacs。接着,使用 `sudo zypper in sdcc` 安装 SDCC 编译器。最后,利用 `wget` 下载 sdcflash Python 脚本,以便于单片机的烧录和调试。此外,还介绍了如何配置开发环境,确保各组件协同工作,提高开发效率。 ... [详细]
  • 看官_在GitHub Actions上进行Flutter 的测试和部署
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了在GitHubActions上进行Flutter的测试和部署相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Android工程师最容易遇到4个瓶颈是什么?附带学习经验
    一些感悟穷人的一次失败,为了还债可能一辈子都翻不了身,为还债一辈子送外卖。你将不再会有精力去思考和投机。穷人的失败可能断送了他所有暴富的机遇和时间&# ... [详细]
  • 下载安装并配置flutter
    1.去github上下载flutter安装包https:github.comflutterflutterreleasestag2.0.42.将安装包zip解压到你想安装Flut ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter添加APP启动StoryView相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
阿斌之摩羯座
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有