首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用react-native-svg的iOS上,onPress不能在SVG路径上工作

在使用react-native-svg的iOS上,onPress不能在SVG路径上工作
EN

Stack Overflow用户
提问于 2020-01-24 12:41:07
回答 2查看 950关注 0票数 4

在安卓系统中,当我按下弧线上的任意位置时,onPress总是被正确调用,但在iOS上,onPress有时会被调用,但有时却不会被调用。

此外,没有任何定位元素(绝对/相对定位)与弧线重叠。

这是我的代码。

代码语言:javascript
复制
<Svg
   height={deviceHeight - 200}
   width={deviceWidth}
>
    <Path
       ref={ref => this.pathRef = ref}
       fill="none"
       stroke='rgba(214,51,51,.2)'
       strokeWidth={35}
       onPress={() => console.log('path on pressed called!')}
       d="M 392.72727272727275 124.90909090909088 A 360 450 0 0 0 42.72727272727275 574.9090909090909"
    />
</Svg>

我还在react-native-svg包中记录了一个问题:https://github.com/react-native-community/react-native-svg/issues/1256

EN

回答 2

Stack Overflow用户

发布于 2020-02-13 18:32:40

在react-native-svg中,您可以使用" symbol“组件,它会将所有元素组合到一个元素中,然后将onPress()添加到该符号中。它将适用于所有绝对/相对内容。

代码语言:javascript
复制
<Svg height="150" width="110">
  <Symbol id="symbol" viewBox="0 0 150 110" width="100" height="50">
    //------------------------------
    // Your content for that arc
    //------------------------------
  </Symbol>
</Svg>
票数 0
EN

Stack Overflow用户

发布于 2021-09-22 22:53:26

不确定这是否适用于任何还在寻找的人,但我也遇到了同样的问题,这就是对我有效的解决办法。我将svg包装在react-native-gesture-handler的TouchableOpacity中。

代码语言:javascript
复制
import { TouchableOpacity } from 'react-native-gesture-handler';

<TouchableOpacity activeOpacity={1} onPress={onPress}>
  <Svg>
    {/* more stuff here */}
  </Svg>
</TouchableOpacity>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59890454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档