出于某种原因,屏幕中间有一个虚构的块,如果该部分位于这个虚构的框内,则不允许我单击 TextInput 或 TouchableOpacity/TouchableHighlights 的部分(即带有图标、文本、填充和颜色的按钮)。这是最奇怪的错误。在尝试调试它时,我添加了一个 ScrollView,如果我将这些 TouchableHighlights 滚动到这个想象中的框之外,我可以单击它们。如果我将它们滚动回框内,它们不会单击。如果他们一半在,一半的按钮点击。你明白了。
我已经为项目的其他部分的这些按钮使用了相同的 CSS 和组件层次结构,并且它们在这个想象的盒子之外可以正常工作。我真的大吃一惊。
这是我的项目的一些示例代码。
<>
<TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' , backgroundColor: '#cc0000'}}>
<Image source={require('../../images/logo.png')} style={{}}/>
<Text style={{ color: 'white', fontSize:20, fontWeight: "bold", paddingBottom:60}}>iPhone Wallet</Text>
<TextInput
autoCapitalize="none"
onChangeText = {text => this.setUserName(text)}
style={{height: 60, fontSize: 20, borderColor: '#c0cbd3', color: 'black', backgroundColor: 'white', borderRadius: 5, width: 300, margin: 10, padding: 10}}
placeholder = "Student Email"
placeholderTextColor="#000"
/>
<TextInput
autoCapitalize="none"
onChangeText = {text => this.setPassword(text)}
style={{height: 60, fontSize: 20, borderColor: '#c0cbd3', color: 'black', backgroundColor: 'white', borderRadius: 5, width: 300, margin: 10, padding: 10}}
placeholder = "Password"
placeholderTextColor="#000"
secureTextEntry={true}
/>
<TouchableHighlight
onPress = {() => this.loginUser()}
style={{height: 60, borderRadius: 5, width: 300, margin: 10, padding:10, backgroundColor: '#1985ff', alignItems: 'center', justifyContent: 'center', underlayColor:'blue'}} >
<View style={{alignItems: 'center', justifyContent: 'center',width: '100%',flexDirection:'row', flexWrap:'wrap'}}>
<Ionicons name={'log-in-outline'} size={23} color={'white'} />
<Text style={{color: 'white',fontSize: 20, marginLeft:10}}>Login</Text>
</View>
</TouchableHighlight>
<TouchableHighlight
onPress = {() => this.resetPasswordAlert()}
style={{ marginTop:'5%', padding:10, alignItems: 'center', justifyContent: 'center'}} >
<Text style={{color: 'white',fontSize: 17}}>Forgot Password?</Text>
</TouchableHighlight>
<TouchableHighlight
onPress = {() => this.props.navigation.navigate('Signup')}
style={{ marginTop:'5%', padding:10, alignItems: 'center', justifyContent: 'center'}} >
<Text style={{color: 'white',fontSize: 17}}>Create Account</Text>
</TouchableHighlight>
</View>
</TouchableWithoutFeedback>
<View style={{ position: 'absolute', marginTop:'85%',marginLeft:'35%'}}>
<ActivityIndicator animating = {this.state.loadingIndicator} color="#000000" size="large" />
</View>
</>
我一直在 iPhone 12 模拟器和实际的 iPhone XR 上进行测试,两者的效果相同。这是上面代码的图像,带有我添加的假想框。很大一部分登录按钮是不可点击的(粉红色)。
这个假想的盒子发生在多个不同的屏幕上,这些屏幕同时使用堆栈导航器或选项卡导航器在屏幕/组件之间导航。很难判断假想的盒子是否对于所有组件都相同大小。任何帮助是极大的赞赏!谢谢。