onEndEditing和onBlur之间的区别?

时间:2015-12-02 21:26:04

标签: react-native

React Native有一个TextInput组件来接受用户输入,我对

之间的区别感兴趣

onEndEditing event.PreventDefault();

onBlur (callback that is called when text input ends)

是否有一个只有onBlur无法解决的场景,当onEndEditing有用时?

2 个答案:

答案 0 :(得分:25)

哈,首先让我说我讨厌你问这个问题!你让我必须找到答案:)

我认为这源于历史,因为它源自具有原生事件UIControlEventEditingDidEnd的iOS。这可能是blur被引入抽象之前的命名。

<强> TL:DR

在我看来,

onEndEditing应该被弃用,但是现在你应该使用它,因为它是最平台无关的模糊版本。见下文。

onBluronEndEditing都会收到一个事件。在iOS上,这两者似乎完全相同,并且事件具有本机文本。在Android中,它是两个不同的事件,只有其中一个可以访问文本。对我来说,这似乎是一个错误。

请注意Android onEndEditingAndroid onBlur之间的差异。

// this is undefined on Android
onBlur={(e) => alert(e.nativeEvent.text)}

因此,如果在模糊期间阅读文本,您现在可以使用onEndEditing获得跨平台可用性。

请参阅this rnplay以查看操作系统的差异

答案 1 :(得分:6)

查看iOS和Android示例,似乎onEndEditing旨在传递TextInput的内容,而onBlur并不意味着传递任何数据:

引发这些事件之间实际上存在差异。 Here我们可以看到onEndEditing是针对原生Android onEditorAction引发的,而onBlur则不是。该操作可以是"Search"(这对应于Android键盘上的特殊&#34;搜索&#34;图标),但我不知道React Native API允许您将这些操作图标显示为哪个部分键盘。

一般来说,查看examples /实施是理解未能充分记录的内容的好方法。

如果JS文档中不清楚,请提交拉取请求以澄清它。如果实现执行的操作在平台之间没有意义或不一致,请提交拉取请求以修复实现。这应该有助于其他人。