2016-08-11 51 views
5

滚动集中我有一个ScrollViewTextInput multiline={true}字段,用于与动力高度的文本区域,并且从内容读状态(它有一个Text字段内显示所述文本)。防止的TextInput,同时在iOS

我的问题是,当TextInput增长到几行时,如果通过在此字段上滑动来滚动屏幕(我不用长按或其他任何东西),该字段将触发其onFocus事件,键盘会显示。

它不会每次都发生,但它发生的次数足以让它变得非常烦人。

我试着设置ScrollViewkeyboardDismissMode="on-drag"但它没有帮助,键盘在视图滚动时仍然显示。

<ScrollView keyboardDismissMode="on-drag"> 
    <TextInput multiline={true} onFocus={() => console.log('boop')}> 
    <Text>{this.state.someText}</Text> 
    </TextInput> 
</ScrollView> 

我也试过这样做没有Text领域内TextInputonFocus仍是起火了。

我做错了什么?还有什么我可以尝试,如检查屏幕是否仍然滚动和blur()该字段,如果true或类似的东西?

如果我明确地点击它,有什么方法可以只关注该字段?

感谢您的帮助。

+0

我有同样的问题 –

+0

同样在这里,仍然试图弄清楚这一点。尝试应答者。 – Palisand

+0

@rudikovac我想我想通了,很快回答。 – Palisand

回答

0

更新
不再工作在0.49.0


包装你TextInput与适当panHandlers一个View

panResponder = PanResponder.create({ 
    onStartShouldSetPanResponderCapture:() => true 
}); 

... 

<ScrollView> 
    <View {...panResponder.panHandlers}> 
    <TextInput ... /> 
    </View> 
</ScrollView> 

在RN 0.46.1测试。

仅适用于iOS,将更新答案,如果/当我得到它在Android上的工作。

+0

它工作的很好,但它也阻止了onBlur事件和TextInput外面的轻敲 - 关闭键盘 – Alex