我正在尝试编写一个非常简单的应用程序来测试本机的反应。
我在一个大的ScrollView中有一些TextInput组件,作为寄存器处方集。
一切正常,但当我滚动点击TextInput时,它不会滚动。
我只能在空白处单击时滚动页面。知道怎么做吗?
感谢。
<ScrollView>
<TextInput onChangeText={email => this.setState({email})} label={ I18n.t("contactEmail") }/>
<TextInput onChangeText={email => this.setState({email})} label={ I18n.t("contactEmail") }/>
<TextInput onChangeText={email => this.setState({email})} label={ I18n.t("contactEmail") }/>
<TextInput onChangeText={email => this.setState({email})} label={ I18n.t("contactEmail") }/>
</ScrollView>
答案 0 :(得分:3)
我遇到了同样的问题,经过一段时间没有回答帮助了我;所以我通过在每个<TouchableWithoutFeedback />
上加<TextInput>
并将触摸事件发送回<TextInput />
来解决问题:
<View>
<TextInput ref ={(ref)=>this.textInput = ref}>
<TouchableWithoutFeedback style={{position: 'absolute', top:0, bottom:0, left:0, right:0}}
onPress={()=>this.textInput.focus()}/>
</View>
您可以创建一个包含TextInput的自定义组件,并在ScrollViews中使用它们。
答案 1 :(得分:0)
我已经解决了这样的问题:
<TouchableOpacity
activeOpacity={1}
style={{ flex: 1 }}
onPress={() => this.textInput.focus()} >
<View
style={{ flex: 1 }}
pointerEvents="none" >
<TextInput
ref={(ref) => this.textInput = ref}
style={{ fontSize: 14, color: '#666666', textAlign: 'right', flex: 1 }}
placeholder={this.props.placeHolder}
defaultValue={this.props.defaultValue ? this.props.defaultValue + '' : ''}
placeholderTextColor='#aaaaaa'
keyboardType={this.props.keyboardType ? this.props.keyboardType : 'default'}
secureTextEntry={this.props.isSecret}
onChangeText={this._onChangeText.bind(this)} />
</View>
</TouchableOpacity>