gpt4 book ai didi

react-native - 点击标记时,我想点击它 3 次

转载 作者:行者123 更新时间:2023-12-04 04:10:45 25 4
gpt4 key购买 nike

an issue使用 Android 上的 map 标记,似乎没有人可以修复它。解决方法是点击 map 标记 3 次,它会正确打开带有图像的标注/注释。

我如何以编程方式执行此操作?每次用户点击时,我都想点击标记 3 次。

<MapView.Marker
key={marker.key}
coordinate={marker.latlng}
title={marker.title}
description={marker.description}
>
<MapView.Callout style={styles.annotation}>
<Image
key={marker.key}
source={{ uri: marker.image }}
style={styles.thumbnail}
/>
</MapView.Callout>
</MapView.Marker>

最佳答案

tl;dr:出于安全原因,这是不可能的。如果用户应用程序能够创建“合成”触摸,则恶意应用程序可能会使用此功能来强制用户的设备“自行行动”。如果您想阅读我的研究,请继续阅读主题。

据我所知,您不能在 React Native 的 JavaScript 端执行此操作。您需要设置一些自定义逻辑才能在 native 端发出 native 事件。

这是因为 React Native 的 JS 端只能处理它通过 native bridge 接收到的 native 事件(比如触摸)。然后,这些事件将触发事件处理代码,例如 Touchable* 组件(例如 TouchableHighlightTouchableOpacity 等)提供的代码。据我所知,根据单向数据流的原则,没有办法从 JS 端发出 native 事件。

另一方面,虽然您可以从 native 端发出任意 native 事件,但您无法知道 JavaScript 端在做什么,除非您以某种方式检查发送到的数据Native 端的渲染方法,即使不是不可能,也可能非常困难。

因此,解决此问题的最佳方法是在 native 代码中创建一个自定义 View 类,只要触摸它就会触发多个触摸事件,并将其包装到 React Native 组件中,如 iOS 中所述。和 Android指南。但是,这样做会出现问题:

在 iOS 中,没有公开可用的方式供用户代码创建 UITouch 对象并将它们分派(dispatch)给 UI。您需要使用未公开的 API 方法来执行此操作,该方法随时可能更改,如果您尝试将应用提交到 App Store,拒绝您的应用。有一种方法可以执行此记录 here ,但它可能已过时,因为 Apple 不保证未公开的 API 保持稳定。那里a few answers on SO already关于为什么在 iOS 上模拟触摸事件不是一个好主意并且让您的应用程序被拒绝。

在 Android 上,this has been discussed at length on the android-platform mailing list ,普遍的共识是不应从用户代码触发任意触摸事件。尝试以编程方式调度 MotionEvent 似乎会导致奇怪且不可靠的行为,如 this question 的第二个答案所示。 ,对该答案的后续评论以及对 this question 的答案.

即使是 React Native 也不会创建自己的触摸事件——它只是接收本地 View 生成的触摸事件。所有 React Native Gesture Responder System只是包装了 native 端可用的公共(public) API - 创建触摸事件的 API 似乎并不公开。

所有这一切让我相信,如果不使用私有(private) iOS/Android API,您想要做的事情根本不可能,很可能是出于安全考虑

关于react-native - 点击标记时,我想点击它 3 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com