使用 Swift 在 iOS WKWebview 中捕获 Javascript 事件

2023-12-24

我正在使用网络编程语言构建一个应用程序,并希望在用户单击 HTML 按钮时启动相机。由于我希望我的相机视图是自定义的,因此我需要使用 Swift 进行设计。因此,当用户单击此 HTML 按钮时,我想在 Swift 中“捕获”此单击,以便可以启动本机相机视图。

我知道可以用 WKWebview 来完成,但我真的不知道该怎么做。

例如,我的 Javascript (jQuery) 代码可能如下所示:

// User clicks to start the native camera with Swift
$(".camera_button").click(function() {
    // Function to call the camera view from JS to Swift
});

你能帮我做到吗?

Thanks.


根据 @Alex Pelletier 的回答,这对我确实有帮助,这是我的问题的解决方案。

在我的“loadView()”函数中,这是我所拥有的:

let contentController = WKUserContentController();
contentController.addScriptMessageHandler(
    self,
    name: "callbackHandler"
)

let config = WKWebViewConfiguration()
config.userContentController = contentController

webView = WKWebView(frame: CGRectZero, configuration: config)
webView.navigationDelegate = self
view = webView

我处理发送到 Swift 的 Javascript 事件的函数:

func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage)
    {
        if(message.name == "callbackHandler") {
            print("Launch my Native Camera")
        }
    }

...最后,当点击我的相机按钮时我的 Javascript (jQuery) 代码(HTML 格式):

$(document).ready(function() {

    function callNativeApp () {
        try {
            webkit.messageHandlers.callbackHandler.postMessage("camera");
        } catch(err) {
            console.log('The native context does not exist yet');
        }
    }

    $(".menu-camera-icon").click(function() {
        callNativeApp();
    });
});

我希望它能帮助别人:-)!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Swift 在 iOS WKWebview 中捕获 Javascript 事件 的相关文章

随机推荐

  • 使用Geopandas,如何通过采样方法在每个多边形中随机选择5个点

    我想根据随机采样方法在每个多边形中选择 5 个点 每个多边形中需要 5 个点坐标 纬度 经度 来识别种植的是哪种作物 使用 geopandas 有什么想法吗 非常感谢 我的建议包括对形状边界框内的随机 x 和 y 坐标进行采样 然后检查采样
  • Backbone 0.9.9:listenTo 和 on 之间的区别

    我正在尝试了解他们在 Backbone 0 9 9 中所做的新更改 目前我在理解之间的区别时遇到了问题listenTo and on listenTo var View Backbone View extend tagName div in
  • 删除切片中的小值

    How can I delete the small values in a slice plot In my plot there is basically too much blue and I cannot see the red p
  • 在graphviz中记录节点和rankdir

    当我将图表的rankdir从LR更改为TD时 我的记录节点也更改了它们的布局方向 因此它们不再看起来像 记录 我尝试对节点应用单独的rankdir 但这没有效果 如何使记录节点保持正确的布局 digraph sample graph ran
  • Windows Phone 8 模拟器错误 - 创建交换机时发生了一些情况

    我有一个类似的问题 就像这个问题中提到的 无法创建虚拟机 https stackoverflow com questions 13148828 windows phone 8 unable to create the virtual mac
  • 查看包含“很多”列的表格的最佳方式?

    冒着被降级的风险 我想问一下 使用 C 和lot列 我所说的很多 是指大约 1000 个 现在 在您感到高兴之前 或者抛出诸如 为什么您会有一个包含那么多列的表格 之类的回答之前 让我说这实际上是设计要求的一部分 我们正在尽可能快地从 10
  • Android应用程序许可证仅持续一段时间

    我们开发了一款 Android 应用程序 我们希望用户可以购买该应用程序 但只能购买一段时间 例如一年 一旦期限到期 他们应该在新的期限内再次购买该应用程序 我们查看了Google有关 应用程序许可 的信息 但已经有一段时间没有看到许可了
  • 基于 DataContext 属性的触发器

    假设我想根据 DataContext 中的属性值显示 隐藏元素 如何实现 In MainWindow xaml cs DataContext of MainWindow xaml public int Mode get set 在 XAML
  • 获取 vim 编辑器上分割窗口的位置

    我一直在尝试找出如何获取 vim 编辑器窗口内分割窗口的位置 坐标 但到目前为止还没有运气 比如说我有这个布局 0 0 2 0 Split A Split C 0 2 Split B Split D Split D would be 2 2
  • 尝试从 Eclipse 到 Android Studio 执行 Android 应用程序时出现异常

    我尝试将 Eclipse Android 项目迁移到 Android Studio 我尝试了两种方法 直接从 Android Studio 打开并先迁移到 Eclipse 中的 Gradle 然后在 Android Studio 中打开它
  • EPPlus 的通用 Excel 生成器函数

    如何为 LINQ 查询构建通用 EPPlus 电子表格函数 更新 该需求专门针对 ASP NET MVC 应用程序 我所做的只是创建一个接受列表的通用函数 我使用反射来获取属性列表 这将成为我们的列标题 最后 我只是让 EPPlus 完成所
  • 是否可以在 Google Apps 脚本中执行 ImportRange?

    我今天一直在玩 Google Apps 脚本 并尝试编写一些自定义电子表格函数 我已经进行了一些搜索 但找不到我的查询的答案 我知道在 Google 电子表格上 您可以在电子表格的单元格中使用 ImportRange 如下所示 Import
  • 使用 foreach 迭代 IQueryable 会导致内存不足异常

    我正在使用 foreach IQueryable 和 LINQ to SQL 迭代一个小型 10GB 表 看起来像这样 using var conn new DbEntities CommandTimeout 600 100 var dta
  • Kubernetes NGINX 入口重写目标注释破坏

    我正在 Windows 的 docker 桌面下运行 kubernetes v1 16 我已经使用 helm 安装了 nginx ingress 控制器 v1 7 9 我已更新我的主机文件以包含以下条目 127 0 0 1 applicat
  • 使用 @font-face 在 IE 中显示无样式内容的 Flash

    我正在开发一个网站 该网站使用 Open Sans 字体作为正文 并使用 Font Squirrel 生成的 EOT SVG WOFF 和 TTF 字体文件和样式表 我首先将字体 CSS 包含在页面标题中 但是 当我在 IE7 IE8 甚至
  • 我可以清除托管对象上下文吗?

    问题 我正在进行一次非常大的导入 其中解析了一个 XML 文件 对于每 10 个解析的托管对象 我想保存托管对象上下文并删除内存中的这 10 个对象 这样内存中的对象永远不会超过 10 个 保存后 如何清除上下文以便所有对象都从内存中消失
  • 获取 MD5 和 SHA-1

    我正在寻求一些帮助来在我的 iPhone 应用程序中获取 MD5 和 SHA 1 有人可以告诉我如何获得这些吗 include
  • 汇编:32 位寄存器的 64 位乘法

    我有一个关于 x86 汇编中 64 位乘法的实现的问题 我已经发布了我能够理解的代码 我不知道其余的人在做什么 而且我可能在我已经做过的事情中犯了错误 任何方向将不胜感激 dest at ebp 8 x at ebp 12 y at ebp
  • HTML 5 响应式 Canvas 中的鼠标位置

    我搜索过其他问题 但没有一个适合我的情况 我有一个画布元素
  • 使用 Swift 在 iOS WKWebview 中捕获 Javascript 事件

    我正在使用网络编程语言构建一个应用程序 并希望在用户单击 HTML 按钮时启动相机 由于我希望我的相机视图是自定义的 因此我需要使用 Swift 进行设计 因此 当用户单击此 HTML 按钮时 我想在 Swift 中 捕获 此单击 以便可以