react-native 触摸焦点事件在键盘上无法触发(需要用于辅助功能)

k5hmc34c  于 5个月前  发布在  React
关注(0)|答案(3)|浏览(77)

描述

我正在尝试在可按压的元素获得焦点时添加自定义焦点样式,以使键盘焦点在任何情况下(深色/浅色模式,不同的背景颜色等)都可见。
看起来 TouchableOpacityTouchableHightlight 都从 TouchableWithoutFeedback 转发而来,而 TouchableWithoutFeedback 具有 onFocusonBlur 事件。我曾试图使用这些事件保持焦点状态以动态渲染样式。然而,它们根本不会被触发,即使我使用 TouchableWithoutFeedback,这让我认为这就是问题所在。
可访问性需要可见的焦点状态。是否有其他方法来获取焦点状态?

重现步骤

这是一个小示例:

const [isFocused, setIsFocused] = useState(false);

return (
  // same with `TouchableWithoutFeedback` and `TouchableOpacity`
  <TouchableHighlight
    onFocus={() => setIsFocused(true)}
    onBlur={() => setIsFocused(false)}
    style={{
      backgroundColor: isFocused?"gray":"transparent",
    }}
  >
    ...
  </TouchableHighlight>
);

React Native 版本

0.74.3

受影响的平台

运行时 - Android

npx react-native info 的输出

System:
  OS: macOS 14.5
  CPU: (12) arm64 Apple M2 Pro
  Memory: 109.05 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.13.1
    path: ~/Library/Caches/fnm_multishells/94190_1719818822541/bin/node
  Yarn: Not Found
  npm:
    version: 10.5.2
    path: ~/Library/Caches/fnm_multishells/94190_1719818822541/bin/npm
  Watchman:
    version: 2024.06.10.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/d.timur/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.5
      - iOS 17.5
      - macOS 14.5
      - tvOS 17.5
      - visionOS 1.2
      - watchOS 10.5
  Android SDK: Not Found
IDEs:
  Android Studio: 2023.2 AI-232.10300.40.2321.11668458
  Xcode:
    version: 15.4/15F31d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.11
    path: /opt/homebrew/opt/openjdk@17/bin/javac
  Ruby:
    version: 2.7.6
    path: /Users/d.timur/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.74.2
    wanted: 0.74.2
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: false

堆栈跟踪或日志

-

可复现问题

https://github.com/proohit/focus-example

截图和视频

  • 无响应*
abithluo

abithluo1#

这也适用于iOS。我们在那里也没有得到焦点事件。尽管这不是一个很大的问题,因为iOS用户可以更改系统焦点指示器

kcrjzv8t

kcrjzv8t2#

对不起,有关于这个的最新消息吗?因为没有它,我们可能无法通过无障碍测试,所以这很紧急。

93ze6v8z

93ze6v8z3#

抱歉,有关于这个的最新消息吗?因为没有它,我们可能无法通过无障碍测试。
目前没有更新。一旦有更新,我们会在这里发布。
我们目前正专注于新架构的推出。由于这不是一个新架构的回归,我们现在无法优先处理它。您非常欢迎发送一个拉取请求,我们可以调查一下。

相关问题