描述
我正在尝试在可按压的元素获得焦点时添加自定义焦点样式,以使键盘焦点在任何情况下(深色/浅色模式,不同的背景颜色等)都可见。
看起来 TouchableOpacity
和 TouchableHightlight
都从 TouchableWithoutFeedback
转发而来,而 TouchableWithoutFeedback
具有 onFocus
和 onBlur
事件。我曾试图使用这些事件保持焦点状态以动态渲染样式。然而,它们根本不会被触发,即使我使用 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
截图和视频
- 无响应*
3条答案
按热度按时间abithluo1#
这也适用于iOS。我们在那里也没有得到焦点事件。尽管这不是一个很大的问题,因为iOS用户可以更改系统焦点指示器
kcrjzv8t2#
对不起,有关于这个的最新消息吗?因为没有它,我们可能无法通过无障碍测试,所以这很紧急。
93ze6v8z3#
抱歉,有关于这个的最新消息吗?因为没有它,我们可能无法通过无障碍测试。
目前没有更新。一旦有更新,我们会在这里发布。
我们目前正专注于新架构的推出。由于这不是一个新架构的回归,我们现在无法优先处理它。您非常欢迎发送一个拉取请求,我们可以调查一下。