Skip to content
This repository has been archived by the owner on Jun 3, 2021. It is now read-only.

Commit

Permalink
[iOS]support viewappear and viewdisappear event on eagle (#2020)
Browse files Browse the repository at this point in the history
  • Loading branch information
jianhan-he authored and YorkShen committed Jan 9, 2019
1 parent b874c1f commit dd27b07
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 12 deletions.
2 changes: 1 addition & 1 deletion ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ namespace WeexCore

+ (void)callUpdateFinish:(NSString*)pageId;

+ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args;
+ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args domChanges:(NSDictionary *)domChanges;

+ (void)registerModules:(NSDictionary *)modules;

Expand Down
5 changes: 3 additions & 2 deletions ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
Original file line number Diff line number Diff line change
Expand Up @@ -790,11 +790,12 @@ + (void)refreshDataRenderInstance:(NSString *)pageId data:(NSString *)data;
node_manager->RefreshPage([pageId UTF8String] ?: "", [data UTF8String] ?: "");
}

+ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args
+ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args domChanges:(NSDictionary *)domChanges
{
NSString *params = [WXUtility JSONString:args];
NSString* nsDomChanges = [WXUtility JSONString:domChanges];
auto vnode_manager = weex::core::data_render::VNodeRenderManager::GetInstance();
vnode_manager->FireEvent([pageId UTF8String] ? : "", [ref UTF8String] ? : "", [event UTF8String] ? : "", [params UTF8String] ? : "", "");
vnode_manager->FireEvent([pageId UTF8String] ? : "", [ref UTF8String] ? : "", [event UTF8String] ? : "", [params UTF8String] ? : "", [nsDomChanges UTF8String] ? : "");
}

+ (void)registerModules:(NSDictionary *)modules {
Expand Down
9 changes: 1 addition & 8 deletions ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
Original file line number Diff line number Diff line change
Expand Up @@ -166,14 +166,7 @@ - (void)fireEvent:(NSString *)eventName params:(NSDictionary *)params domChanges

NSArray *handlerArguments = [self _paramsForEvent:eventName];
NSString *ref = _templateComponent ? _templateComponent.ref : self.ref;
if (self.weexInstance.dataRender) {
WXPerformBlockOnComponentThread(^{
[WXCoreBridge fireEvent:self.weexInstance.instanceId ref:ref event:eventName args:dict];
});
}
else {
[[WXSDKManager bridgeMgr] fireEvent:self.weexInstance.instanceId ref:ref type:eventName params:dict domChanges:domChanges handlerArguments:handlerArguments];
}
[[WXSDKManager bridgeMgr] fireEvent:self.weexInstance.instanceId ref:ref type:eventName params:dict domChanges:domChanges handlerArguments:handlerArguments];
}

- (NSString *)recursiveFindTemplateIdWithComponent:(WXComponent *)component
Expand Down
11 changes: 10 additions & 1 deletion ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
#import "WXMonitor.h"
#import "WXSDKInstance_performance.h"
#import "WXThreadSafeMutableArray.h"
#import "WXComponentManager.h"
#import "WXCoreBridge.h"

@interface WXBridgeManager ()

Expand Down Expand Up @@ -411,6 +413,14 @@ - (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)ty

- (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)type params:(NSDictionary *)params domChanges:(NSDictionary *)domChanges handlerArguments:(NSArray *)handlerArguments
{
WXSDKInstance *instance = [WXSDKManager instanceForID:instanceId];
if (instance.dataRender) {
WXPerformBlockOnComponentThread(^{
[WXCoreBridge fireEvent:instanceId ref:ref event:type args:params?:@{} domChanges:domChanges?:@{}];
});
return;
}

if (!type || !ref) {
WXLogError(@"Event type and component ref should not be nil");
return;
Expand All @@ -422,7 +432,6 @@ - (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)ty
[newArgs addObject:@{@"params":handlerArguments}];
args = newArgs;
}
WXSDKInstance *instance = [WXSDKManager instanceForID:instanceId];

if(instance && !instance.isJSCreateFinish)
{
Expand Down

0 comments on commit dd27b07

Please sign in to comment.