IOS 混合开发 手势返回控制

vue3 quasar capacitor pod 1.10 ffi 1.15.0

效果如下,调用底层插件,子页面通过路由控制视图跟随手指左右切换

  1. 在info.plist同级目录新建Plugin文件夹, 添加自己的插件
    目录结构如下

  2. 添加核心代码iOSSwipeGesturePlugin.swift

    目录/src-capacitor/ios/App/App/Plugin/iOSSwipeGesturePlugin.swift

    import Foundation
    import Capacitor/*** Please read the Capacitor iOS Plugin Development Guide* here: https://capacitorjs.com/docs/plugins/ios*/
    @objc(iOSSwipeGesturePlugin)
    public class iOSSwipeGesturePlugin: CAPPlugin {@objc func enable(_ call: CAPPluginCall) {self.bridge?.webView?.allowsBackForwardNavigationGestures = truecall.resolve()}@objc func disable(_ call: CAPPluginCall) {self.bridge?.webView?.allowsBackForwardNavigationGestures = falsecall.resolve()}
    }
  3. iOSSwipeGesturePlugin.m

    如何xcode提示创建桥接器那么点击确定

    src-capacitor/ios/App/App/Plugin/iOSSwipeGesturePlugin.m

#import <Foundation/Foundation.h>
#import <Capacitor/Capacitor.h>// Define the plugin using the CAP_PLUGIN Macro, and
// each method the plugin supports using the CAP_PLUGIN_METHOD macro.
CAP_PLUGIN(iOSSwipeGesturePlugin, "iOSSwipeGesture",CAP_PLUGIN_METHOD(enable, CAPPluginReturnPromise);CAP_PLUGIN_METHOD(disable, CAPPluginReturnPromise);
)
  1. iOSSwipeGesturePlugin.h

    如果已有的话xcode会自动把你的插件导入
    src-capacitor/ios/App/App.xcodeproj/project.pbxproj
    默认桥接器头文件可能需要修改名称,修改名称的话要在这里面把你的默认名称改掉,想改什么改什么在上面路径里面替换一下名称

#import <UIKit/UIKit.h>//! Project version number for Plugin.
FOUNDATION_EXPORT double PluginVersionNumber;//! Project version string for Plugin.
FOUNDATION_EXPORT const unsigned char PluginVersionString[];// In this header, you should import all the public headers of your framework using statements like #import <Plugin/PublicHeader.h>

路由守卫中添加一层判断是否禁用手势

创建一个j s并导出ios插件

import {registerPlugin} from "@capacitor/core";
const iOSSwipeGesture = registerPlugin('iOSSwipeGesture'); //控制ios手势开启关闭
import {Device} from "@capacitor/device";//设备型号插件let info = {}function logDeviceInfo() {Device.getInfo().then(res => {info = resconsole.log(info)})
}
logDeviceInfo()export default function handleGesture(meta){if (info && info.operatingSystem === 'ios'){if(meta&&meta.noGesture){//不要手势iOSSwipeGesture.disable()}else {iOSSwipeGesture.enable()}}
}

路由守卫里面调用这个方法

  Router.beforeEach((to, from, next) => {// console.log('路由守卫app')// console.log(to, from, next)handleGesture(to.meta) //处理手势//...if (to.name == null) { //没有发现路由console.log('app发现 未知路由进入login页面')next({name: 'loginExcessive'})} else {next()}});

IOS 混合开发 手势返回控制相关推荐

  1. Unity iOS混合开发

    我的第一篇博客是写的Unity和Android平台混合开发相关,接触iOS和Object-C也有一段时间了,此次,将讲述下Unity与iOS混合开发的原理,也为Unity高级移动端混合开发做下铺垫.闲 ...

  2. iOS 右滑手势返回上一级

    首先iOS7以后系统默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 但是如果我们从从导航控制器的返回按钮,就发现系统所带的侧滑返回功能无法使用,而且有些功能不尽人意.系统自定义的优 ...

  3. 安卓ios混合开发技术_微信已支持改微信号,安卓最新版微信一年可修改一次

    紫金财经6月5日消息 今日,腾讯方面发文称,安卓最新版微信已经支持微信号修改,且一年只可修改一次.随后网友们表示,微信团队终于将大家期盼已久的问题给解决了,奥利给! 腾讯官微表示,这次推出的微信号可修 ...

  4. ionic+angularJS+iOS混合开发app的学习资料介绍和基本步骤(干货)

    ionic+angularJS+iOS 先安装nodejs.npm.angularJS和ionic 其中nodeJS和npm安装可以到官网下载nodeJS,然后双击安装就好很简单(网址: http:/ ...

  5. IOS,H5混合开发,setTimeout定时器失效

    项目中有需要定时请求服务器,来刷新用户新消息汇总的功能.没有使用第三方推送,暂时用app定时刷新来权宜实现. 安卓版本中使用的Hbuilder开发,使用是全部都是h5页面,不论当前是否是请求服务器的页 ...

  6. iOS混合开发之uni-app本地打包集成到iOS原生项目

    iOS混合开发 1.前言 2.项目背景 3.项目框架 4.从入坑到踩坑 4.1打包错误 4.2 运行错误 总结 1.前言     前端统一开发越来越多,公司为了大一统前端的所有页面显示问题,同时为节约 ...

  7. iOS开发--下滑返回dismiss

    简介 现在越来越多的应用有看大图或者进入详情页面,但是,再返回的时候,普通意义上,会点击左上角的返回,这时候你就会发现,还需要将手指移动到左上角,这样,无意给用户增添了麻烦,并且,现在手机屏幕越来越大 ...

  8. 混合开发监听安卓手机物理返回键

    混合开发监听安卓手机物理返回键 在用h5做混合开发过程中由于有个考试考试页面,中途不能退出,退出要添加确认操作,所以需要监听手机的返回操作,不让用户直接通过返回键返回 目前了解到混合开发中有两种方式监 ...

  9. Flutter开发之《头条 Flutter iOS 混合工程实践》笔记(54)

    摘自:头条 Flutter iOS 混合工程实践 从 App Store 下载或更新头条(6.9.2 或以上版本),找到 懂车帝 -> 热门车型,点击打开后即可体验 Flutter 的页面效果. ...

  10. IOS 开发 手势使用

    首先为了防止看我的博客的人刚打开就关闭,所以就先给个手势的例子 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] ...

最新文章

  1. java 发送邮件_老板要实现SpringBoot发送邮件?大神发了这篇文章后,今晚准点下班...
  2. 威联通架设php网站_使用QNAP NAS虚拟主机功能架设多个网站
  3. wxWidgets:子类化Subclassing WxControl
  4. 技术的想象力:云栖大会第一天发布了什么?
  5. 小程序向java后台发送图片_微信小程序在后台如何将二进制流转换成图片
  6. 双路由器双小型交换机组建公司网络,2个公网IP上网案例(转载)
  7. python数据类型--数字、字符串
  8. IntelliJ IDEA 2018 设置代码提示对大小写不敏感
  9. spring cloud gateway 之限流篇
  10. mysql集群之MHA简单搭建
  11. bzoj 3101: N皇后
  12. jni4net调用net库
  13. Spark 概念学习系列之从spark架构中透视job(十六)
  14. Notepad++无法修改中文解决办法
  15. pdf 旋转视图,为啥不能保存?
  16. RabbitMQ Management HTTP API的简单封装
  17. 安全牛联合世平信息共同发布《数据防泄密 (DLP) 业务应用指南》
  18. 服务器如何选择固态硬盘,为什么绝大数服务器还使用机械硬盘,而不选固态硬盘呢?...
  19. 2022. 06 青少年机器人技术等级考试理论综合试卷(三级)
  20. 17/10/2019 细胞死亡的十一种方式--转自解螺旋公众号

热门文章

  1. 朗强:HDMI分配延长器的作用
  2. Python五角星绘制
  3. 谷歌地图的API应用
  4. 计算机上电自检的作用,计算机上电自检的过程是什么
  5. 【C/C++】简单的程序小游戏-推箱子代码
  6. oracle数据类型为文本类型,Oracle 字段类型
  7. eureka集群 ha_eureka集群基于DNS配置方式
  8. SpringBoot 之 @Transaction注解的类级别和方法级别的区别
  9. 前端promise、async重点总结
  10. 昌航程序设计竞赛初赛(周五晚19点)