IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> uniapp 开发实四 :uniapp 与ios原生交互 -> 正文阅读

[JavaScript知识库]uniapp 开发实四 :uniapp 与ios原生交互

效果如下图:

?

uniapp:代码

<template>
?? ? ?
? ? <view class="contain">
?? ??? ?<input type="number" v-model="num1" @input="onKeyInput1" class="numstyle" placeholder="请输入加数1" />
?? ??? ?<text style="margin-left: 15rpx;margin-right: 15rpx;">+</text>
?? ??? ?<input type="number" v-model="num2" ?@input="onKeyInput2" class="numstyle" placeholder="请输入加数2" />
?? ??? ? <button type="primary" style="width: 80rpx;height: 80rpx;" @click="testFunc">=</button>
?? ??? ?<input type="number" v-model="num3" class="numstyle"/>
?? ?</view>
? ? ?
?? ??? ?
</template>

<script>
? ? // 首先需要通过 uni.requireNativePlugin("ModuleName") 获取 module?
? ? var nativeModule = uni.requireNativePlugin("DCTestUniPlugin-NatvieModule")
? ? export default {
?? ??? ?data() { ?
?? ??? ??? ?return { ?
?? ??? ??? ??? ?num1: "", ?
?? ??? ??? ??? ?num2: "",
?? ??? ??? ??? ?num3:""
?? ??? ??? ?}; ?
?? ??? ?}, ?
? ? ? ? methods: {
?? ??? ??? ? onKeyInput1: function(event) { ?
?? ??? ??? ??? ?this.num1 = event.target.value ?
?? ??? ??? ?},
?? ??? ??? ?onKeyInput2: function(event) {
?? ??? ??? ??? ?this.num2 = event.target.value ?
?? ??? ??? ?},
? ? ? ? ? ? testFunc() {
?? ??? ??? ??? ?
? ? ? ? ? ? ? ? // 调用异步方法
? ? ? ? ? ? ? ? nativeModule.testFunc({
? ? ? ? ? ? ? ? ? ? ? ? 'num1': this.num1,
? ? ? ? ? ? ? ? ? ? ? ? 'num2': this.num2
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? (ret) => {
?? ??? ??? ??? ??? ??? ?this.num3=ret;
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? }
?? ??? ?}
?? ?}
?? ??? ??? ?
</script>
<style>
?? ?.contain{
? ? ? ?
?? ??? ?display: flex;
?? ??? ?flex-direction: row;
?? ??? ?align-items: center;
?? ??? ?height: 80rpx;
?? ?} ??
?? ?.numstyle{
?? ??? ?width: 180rpx;
?? ??? ?height: 80rpx;
?? ??? ?text-align: center;
?? ??? ?background-color: #4CD964;
?? ?}
?? ?
</style>

ios原生代码:

@implementation NatvieModule

// 通过宏 UNI_EXPORT_METHOD 将异步方法暴露给 js 端

UNI_EXPORT_METHOD(@selector(testFunc:callback:))

/// 异步方法(注:异步方法会在主线程(UI线程)执行)

/// @param options js 端调用方法时传递的参数

/// @param callback 回调方法,回传参数给 js 端

- (void)testFunc:(NSDictionary *)options callback:(UniModuleKeepAliveCallback)callback {

? ? // options 为 js 端调用此方法时传递的参数

? ? NSLog(@"%@",options);

? ? double? num1=[[options objectForKey:@"num1"] doubleValue];

? ? double? num2=[[options objectForKey:@"num2"] doubleValue];

?? ?

? ? // 可以在该方法中实现原生能力,然后通过 callback 回调到 js

? ? double? num3=num1+num2;

? ? NSLog(@"1111%f",num3);

? ? // 回调方法,传递参数给 js 端 注:只支持返回 String 或 NSDictionary (map) 类型

? ? if (callback && num3) {

? ? ? ? NSLog(@"11112222");

? ? ? ? // 第一个参数为回传给js端的数据,第二个参数为标识,表示该回调方法是否支持多次调用,如果原生端需要多次回调js端则第二个参数传 YES;

? ? ? ? callback([NSString stringWithFormat:@"%.2lf" ,num3],NO);

? ? }

}

@end

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:06:53  更:2022-02-03 01:08:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:45:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码