javascript - 如何禁用 TouchableOpacity 内的可点击开关?
问题描述
在我的应用程序中,我有一行文本,并且在同一行上的辅助是一个开关。单击开关会更改其值,但我希望整行都可以单击并更改其值。
我最终使用以下代码TouchableOpacity
:
<TouchableOpacity style={{flexDirection: 'row', alignItems: 'center'}} onPress={() => {this.setState({isAgree: !this.state.isAgree})}>
<Text>Do you agree? </Text>
<Switch value={this.state.isAgree} onValueChange={(n) => this.setState({isAgree: n})}/>
</TouchableOpacity>
该行是可点击的,并且应该做它应该做的事情,但是当点击Switch
按下事件时TouchableOpacity
,我会得到两种不同的“效果”——按下开关时的标准点击事件TouchableOpacity
和按下开关Switch
时的标准点击事件自行切换。
我尝试disabled={true}
在开关上进行设置,它给出了我正在寻找的确切行为 - 除了开关变暗。玩弄zIndex
或删除onValueChange
也无济于事。
解决方案
您可以通过View
在pointerEvents="none"
您的Switch
.
pointerEvents="none"
防止触发 Switch 事件。相反,父事件(TouchableOpacity 的 onPress)将被触发。
<TouchableOpacity style={{flexDirection: 'row', alignItems: 'center'}} onPress={() => {this.setState({isAgree: !this.state.isAgree})}}>
<Text>Do you agree? </Text>
<View pointerEvents="none">
<Switch value={this.state.isAgree} onValueChange={(n) => this.setState({isAgree: n})}/>
</View>
</TouchableOpacity>
推荐阅读
- php - 一行平行文本中的 FPDF 多单元格功能
- swift - 使用 Xcode 11.3 在 iOS 13 上未显示栏
- python - Python重命名文件 - 用空格替换所有下划线
- java - 在 strings.xml 中找不到所有可翻译的字符串 - Android Studio
- javascript - 如何使用 IANA 时区标识符获取特定时区的当前日期时间?
- flutter - Flutter嵌套的CustomScollView无法滚动子滚动视图
- excel - 在 Excel 中添加锁定/解锁的单元格后,VBA 选择和复制不起作用
- vue.js - 在内部存储中显示视频 (Vue)
- php - 忽略对 is_countable 的检查的 sizeof 的替代方案
- nlp - 对于服务机器人,我应该使用 ChatScript 还是 Rasa?