当模式打开时,如何将焦点设置到模式内的第一个(或任何给定的)TouchableHighlight 组件?
我正在使用方向键/键盘/电视遥控器
让我们使用react-native文档模式示例的片段:
<View style={{marginTop: 22}}>
<Modal
animationType="slide"
transparent={false}
visible={this.state.modalVisible}
onRequestClose={() => {
Alert.alert('Modal has been closed.');
}}>
<View style={{marginTop: 22}}>
<View>
<TouchableHighlight>
<Text>Button 1</Text>
</TouchableHighlight>
<TouchableHighlight>
<Text>Button 2</Text>
</TouchableHighlight>
<TouchableHighlight
onPress={() => {
this.setModalVisible(!this.state.modalVisible);
}}>
<Text>Hide Modal</Text>
</TouchableHighlight>
</View>
</View>
</Modal>
<TouchableHighlight
onPress={() => {
this.setModalVisible(true);
}}>
<Text>Show Modal</Text>
</TouchableHighlight>
</View>
使用方向键导航可以工作,但打开模式时,第一个 TouchableHighlight(按钮 1)未获得焦点,焦点仍位于“显示模式”按钮上
或者,如何以编程方式将焦点设置在“Button 2”TouchableHighlight 上?
例如,TextInput 有 autoFocus,但 TouchableHighlight 没有,如果我们在模态中仅使用 Touchable 组件,我不知道如何自动聚焦它们,或者隐式设置它
此致
Add hasTVPreferredFocus: true
到您想要聚焦的 TouchableHighlight。
尽管文档指出 hasTVPreferredFocus 仅适用于 iOS,但它还是在 Android 上实现的。
您还可以通过编程方式强制聚焦:
yourElementRef.setNativeProps({ hasTVPreferredFocus: true })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)