Keep the order of Modals that we can dismiss in sequence (#24961)
Summary: Fixes https://github.com/facebook/react-native/issues/16037. We need to keep the order of Modals, if we dismiss Modal randomly(before we use hash table), some Modals may not dismiss successfully. This PR should based on https://github.com/facebook/react-native/pull/24959. ## Changelog [iOS] [Fixed] - Keep the order of Modals that we can dismiss in sequence Pull Request resolved: https://github.com/facebook/react-native/pull/24961 Differential Revision: D15621858 Pulled By: cpojer fbshipit-source-id: 964729f8f4584995f4e1dd527af4b61534d369ba
This commit is contained in:
Родитель
afc142bc76
Коммит
fd7f5bb768
|
@ -49,7 +49,7 @@ RCT_ENUM_CONVERTER(UIModalPresentationStyle, (@{
|
||||||
|
|
||||||
@implementation RCTModalHostViewManager
|
@implementation RCTModalHostViewManager
|
||||||
{
|
{
|
||||||
NSHashTable *_hostViews;
|
NSPointerArray *_hostViews;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT_EXPORT_MODULE()
|
RCT_EXPORT_MODULE()
|
||||||
|
@ -59,9 +59,9 @@ RCT_EXPORT_MODULE()
|
||||||
RCTModalHostView *view = [[RCTModalHostView alloc] initWithBridge:self.bridge];
|
RCTModalHostView *view = [[RCTModalHostView alloc] initWithBridge:self.bridge];
|
||||||
view.delegate = self;
|
view.delegate = self;
|
||||||
if (!_hostViews) {
|
if (!_hostViews) {
|
||||||
_hostViews = [NSHashTable weakObjectsHashTable];
|
_hostViews = [NSPointerArray weakObjectsPointerArray];
|
||||||
}
|
}
|
||||||
[_hostViews addObject:view];
|
[_hostViews addPointer:(__bridge void *)view];
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ RCT_EXPORT_MODULE()
|
||||||
for (RCTModalHostView *hostView in _hostViews) {
|
for (RCTModalHostView *hostView in _hostViews) {
|
||||||
[hostView invalidate];
|
[hostView invalidate];
|
||||||
}
|
}
|
||||||
[_hostViews removeAllObjects];
|
_hostViews = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT_EXPORT_VIEW_PROPERTY(animationType, NSString)
|
RCT_EXPORT_VIEW_PROPERTY(animationType, NSString)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче