RCTUIManager.m错误帧不是<rctshadowview> IOS的​​后代

时间:2016-06-02 02:28:48

标签: react-native

我在切换文本输入时和键盘显示时遇到此错误。文本输入位于animated.view中,我以模态方式呈现。

[error][tid:com.facebook.react.ShadowQueue][RCTUIManager.m:1188] view <RCTShadowView: 0x1284daae0; viewName: RCTTextField; reactTag: 318; frame: {{0, 27.5}, {256, 18}}> (tag #318) is not a descendant of <RCTShadowView: 0x12827bd40; viewName: RCTView; reactTag: 256; frame: {{0, 0}, {320, 799}}> (tag #256)

1 个答案:

答案 0 :(得分:1)

问题

我发现,此错误的主要原因是多个视图同时正在聆听键盘。例如,当导航堆栈内的多个滚动视图正在侦听键盘事件以滚动到文本输入时,就会发生这种情况。当库的用户将多个滚动视图推送到同一导航堆栈时,react-native-keyboard-aware-scroll-view会多次出现此问题。

这是RN内的一个已知问题。您可能会发现围绕此PR的讨论很有帮助:

https://github.com/facebook/react-native/pull/7876

当前解决方案

我并不确切知道您的用例是什么,但解决方案是确保您不会同时听多个视图来聆听键盘。您可以通过在适当的时间注册和取消注册Keyboard事件侦听器来执行此操作,或者(在上面描述的情况下,问题是由导航堆栈中的多个键盘识别滚动视图引起的),删除任何订阅键盘事件的视图在推送新视图之前从导航堆栈中。

从上面的公关中可以看出,解决这个问题可能会很快变得容易。但与此同时,您可以手动检查键盘上有多少个听众。