我正在我的应用程序中将VoiceAccess与VoiceOver一起使用。问题是当我将accessibilityViewIsModal
属性与Modal
一起使用并且Modal已打开时,VoiceOver会读取Modal背后的内容。根据文档:
在包含同级视图A和B的窗口中,设置在视图B上将accessibilityViewIsModal设置为true会导致VoiceOver忽略另一方面,如果视图B包含一个子视图C,并且您在视图C上将accessibilityViewIsModal设置为true,VoiceOver不会忽略视图A中的元素。
试图这样做但没有成功。
这是我的代码:
import React from 'react';
import Button from 'react-native-button';
import Modal from 'react-native-modalbox';
import Slider from 'react-native-slider';
import {
AppRegistry,
Text,
StyleSheet,
ScrollView,
View,
Dimensions,
TextInput
} from 'react-native';
var screen = Dimensions.get('window');
class AccessibilityApp extends React.Component {
constructor() {
super();
this.state = {
isOpen: false,
isDisabled: false,
swipeToClose: true,
sliderValue: 0.3
};
}
onClose() {
console.log('Modal just closed');
}
onOpen() {
console.log('Modal just openned');
}
onClosingState(state) {
console.log('the open/close of the swipeToClose just changed');
}
renderList() {
var list = [];
for (var i=0;i<50;i++) {
list.push(<Text style={styles.text} key={i}>Elem {i}</Text>);
}
return list;
}
render() {
var BContent = <Button onPress={() => this.setState({isOpen: false})} style={[styles.btn, styles.btnModal]}>X</Button>;
return (
<View style={styles.wrapper}>
<Button onPress={() => this.refs.modal3.open()} style={styles.btn}>Position centered + backdrop + disable</Button>
<Modal accessibilityViewIsModal={true} style={[styles.modal, styles.modal3]} position={"center"} ref={"modal3"} isDisabled={this.state.isDisabled}>
<Text style={styles.text}>Modal centered</Text>
<Button onPress={() => this.setState({isDisabled: !this.state.isDisabled})} style={styles.btn}>Disable ({this.state.isDisabled ? "true" : "false"})</Button>
</Modal>
</View>
);
}
}
const styles = StyleSheet.create({
wrapper: {
paddingTop: 50,
flex: 1
},
modal: {
justifyContent: 'center',
alignItems: 'center'
},
modal2: {
height: 230,
backgroundColor: "#3B5998"
},
modal3: {
height: 300,
width: 300
},
btn: {
margin: 10,
backgroundColor: "#3B5998",
color: "white",
padding: 10
},
btnModal: {
position: "absolute",
top: 0,
right: 0,
width: 50,
height: 50,
backgroundColor: "transparent"
},
text: {
color: "black",
fontSize: 22
}
});
AppRegistry.registerComponent('AccessibilityApp', () => AccessibilityApp);
这是屏幕截图:
问题是,当我在模态下使用accessibilityViewIsModal属性并且模态被打开时,VoiceOver会读取模态背后的内容。