diff --git a/ios/src/ReactNative/RNIContextMenu/RNIDeferredMenuElement.swift b/ios/src/ReactNative/RNIContextMenu/RNIDeferredMenuElement.swift index f77348f..e61e7f0 100644 --- a/ios/src/ReactNative/RNIContextMenu/RNIDeferredMenuElement.swift +++ b/ios/src/ReactNative/RNIContextMenu/RNIDeferredMenuElement.swift @@ -24,12 +24,14 @@ class RNIDeferredMenuElement: RNIMenuElement { // ----------------------------- var deferredID: String; + var shouldCache: Bool; override init?(dictionary: NSDictionary){ guard let deferredID = dictionary["deferredID"] as? String else { return nil }; self.deferredID = deferredID; + self.shouldCache = dictionary["shouldCache"] as? Bool ?? true; super.init(dictionary: dictionary); @@ -42,6 +44,14 @@ class RNIDeferredMenuElement: RNIMenuElement { // make local copy to prevent using `[weak self]` let deferredID = self.deferredID; + if !self.shouldCache, + #available(iOS 15.0, *) { + + return UIDeferredMenuElement.uncached { completion in + handler(deferredID, completion); + }; + }; + return UIDeferredMenuElement { completion in handler(deferredID, completion); }; diff --git a/src/types/MenuConfig.ts b/src/types/MenuConfig.ts index 445b36f..ca8adaf 100644 --- a/src/types/MenuConfig.ts +++ b/src/types/MenuConfig.ts @@ -16,6 +16,7 @@ export type MenuAttributes = 'hidden' | 'disabled' | 'destructive'; export type DeferredMenuElementConfig = { type: 'deferred'; deferredID: string; + shouldCache?: boolean; }; export type MenuActionConfig = {