HeaderRight 按钮不可点击(React Native)

Posted

技术标签:

【中文标题】HeaderRight 按钮不可点击(React Native)【英文标题】:HeaderRight Buttons are not clickable (React Native) 【发布时间】:2021-12-01 14:12:45 【问题描述】:

我在使用 React Native Navigation v5 headerRight 按钮时遇到了一个奇怪的错误。我目前在反应原生导航屏幕中将 TouchableOpacity 设置为 headerRight 组件;但是,未触发 onPress 事件。标题(标题区域)的中间似乎有一个不可见的对象,它具有绝对位置,这会阻止 onPress 事件被注册。我尝试使用 zIndex 和 headerMode 值;但是,该按钮仍然不可按下。我只能在按钮位于屏幕的最右侧(即marginRight:0)时按下按钮。任何帮助将不胜感激。

作为参考,我遇到了与以下线程相同的问题:https://github.com/react-navigation/react-navigation/issues/7052

我的代码示例

<StackNavigator.Navigator headerMode='screen'>
  <StackNavigator.Screen
    name='Home'
    component=HomeScreen
    options=
      headerRight: () => (
        <TouchableOpacity
          onPress=() => 
        >
          <Text>Button Text</Text>
        </TouchableOpacity>
      ),
    
  />
</StackNavigator.Navigator>

【问题讨论】:

这段代码看起来不错。你确认它没有打电话给onPress。在onPress 中尝试一些console.log 是的,我有一个在 onPress 函数内部触发的事件。当我按下按钮的最右上角时它会激活,但是当按钮移向标题的中心时,按钮不再是可按下的。似乎在内置标题顶部有一个视图阻止了 onPress 事件,但我似乎找不到解决方法。 设法解决了这个问题。将 HeaderTitle 设置为空视图会移除阻塞按钮的浮动视图。希望这对某人有帮助???? 【参考方案1】:

更新到以下软件包似乎已经为我解决了这个问题:

"@react-navigation/stack": "5.9.3",
"@react-navigation/drawer": "5.9.3",
"@react-navigation/native": "5.7.4",

【讨论】:

感谢拉维的回复。我已将我的软件包更新到最新版本,但这似乎并没有解决问题。但是,我设法弄清楚了这一点。将 HeaderTitle 设置为空视图会移除阻塞按钮的浮动视图。【参考方案2】:

尝试给 zIndex 提供更高的值,可能是 100 或给 headerMode: float 如果这也不起作用尝试更新你的包。

【讨论】:

以上是关于HeaderRight 按钮不可点击(React Native)的主要内容,如果未能解决你的问题,请参考以下文章

iOS15 中后退按钮的 headerTintColor 被忽略(react-navigation v5)

react-navigation 做导航栏,发现 Android 上的标题不居中

使用React与antd新建自定导航栏

android 如何设置按钮 不可点击

覆盖按钮不可点击/不可按下。

react循环多个按钮,这个按钮如何点击一次,将值放在一个数