ios自动化返回键方案

iOS 返回键方案

1.有node的label属性,提前生成列表,每个页面获取dom的时候就获取到此节点,用于返回操作,经过首页的测试收集关键字集合[“返回”,”Back”,”close”,”Close”,”back””topBar icon 01 02”,”558FC254 2DD6 4183 ABC3 FE4A89”]

2.没有返回键的页面,但是有X,适用于1规则

3.如果1,2规则都不满足,那么使用右滑,目前从主页测试来看 90%的页面都是满足的

def press_back_ios(self, page):
        """
        ios由于没有物理返回键,下方的1234,来实现返回操作,优先级 1234
        1.返回键
        直播列表页面:topBar icon 01 02,topBar icon 01 02,,true,true,16,55,20,22,0,

        2.点击x
        直播页面:SHVPClose,SHVPClose,,true,true,335,44,28,28,2,

        3.返回 name点击

        4.右滑
        s.swipe(0.01, 0.5, 0.5, 0.5)

        :return:
        """
        if page.pressBackButtonIos:
            self.s(label=page.pressBackButtonIos).click
            return
        self.s.swipe(0.01, 0.5, 0.5, 0.5)

实操验证:页面验证(失效——右滑失效)

name—label—value

直播详情页 失效

直播页面:SHVPClose,SHVPClose,true,true,335,44,28,28,2, 是右上角的X,此页面没有返回按钮

京东超市 失效
------------------------ XCUIElementTypeOther
开始打印返回,返回,true,true,15,53,20,21,0,

京东电器 生效
------------------------ XCUIElementTypeButton
开始打印MenuIconBack White,MenuIconBack White,true,true,16,55,20,20,0,

服装美妆 生效
------------------------ XCUIElementTypeButton
开始打印MenuIconBack White,MenuIconBack White,true,true,16,55,20,20,0,

免费水果 生效
------------------------ XCUIElementTypeButton
开始打印返回,返回,true,true,16,44,44,44,0,

生活缴费 生效
------------------------ XCUIElementTypeButton
开始打印返回,返回,true,true,0,43,44,43,0,

领京豆 生效
没有node

借钱 生效
------------------------ XCUIElementTypeButton
开始打印返回,返回,true,true,16,56,20,20,0,

秒杀 生效
------------------------ XCUIElementTypeOther
开始打印返回,返回,true,true,3,48,35,36,0,

直播主页面 生效
------------------------ XCUIElementTypeButton
开始打印topBar icon 01 02,topBar icon 01 02,true,true,16,55,20,22,0,

排行榜 生效
------------------------ XCUIElementTypeButton
开始打印558FC254 2DD6 4183 ABC3 FE4A89,558FC254 2DD6 4183 ABC3 FE4A89,true,true,16,56,20,20,0,

品牌闪购 生效
------------------------ XCUIElementTypeButton
开始打印返回上一级,返回上一级,true,true,10,43,21,44,0,

商详 生效
------------------------ XCUIElementTypeButton
开始打印返回,返回,true,true,10,50,30,30,0,

### 解决 iOS 端侧滑返回不触发 `onBackPress` 的方案 对于 iOS 平台上的应用程序,在实现导航功能时可能会遇到侧滑手势返回页面时不触发 `onBackPress` 事件的情况。这主要是因为 iOS 和 Android 对于返回操作有不同的处理机制。 为了使侧滑返回能够正常触发展示逻辑中的 `onBackPress` 方法,可以考虑如下解决方案: #### 使用 React Navigation 提供的监听器 React Navigation 库提供了对路由变化的强大支持,允许开发者通过自定义方式来响应这些改变。针对此问题,可以通过设置焦点监听器来捕获页面切换的动作并执行相应的回调函数[^1]。 ```javascript import { useFocusEffect } from '@react-navigation/native'; function MyScreen({ navigation }) { useFocusEffect( React.useCallback(() => { const onBackPress = () => { console.log('Handling back press'); // 自定义回退行为 return true; // 返回true阻止默认动作 }; BackHandler.addEventListener('hardwareBackPress', onBackPress); return () => BackHandler.removeEventListener('hardwareBackPress', onBackPress); }, []) ); return ( <View> {/* 组件内容 */} </View> ); } ``` 上述代码片段展示了如何利用 `useFocusEffect` 钩子为特定屏幕添加硬件返回按下事件处理器。当该屏幕获得或失去焦点时会自动注册/注销这个监听器,从而确保只在当前屏幕上生效。 另外需要注意的是,由于 iOS 上并没有物理性的 “back” ,因此这里的 `onBackPress` 主要是为了兼容 Android 设备而设计;而在 iOS 中,则更多依赖于系统的交互模式(比如左侧边缘向右滑动)。如果希望统一两个平台的行为表现,可以在检测到操作系统类型后有条件地应用不同的策略。 例如,借助 `Platform.OS === 'ios'` 判断条件来进行差异化开发,以便更好地适配不同设备特性带来的差异性需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值