美文网首页
weex navigator item 单击事件

weex navigator item 单击事件

作者: i0S_毛_宇 | 来源:发表于2018-08-20 10:03 被阅读0次

官方文档中没有描述,是从看sdk源码得知的方法。

  • WXNavigatorModule.m
    对外开放的有setNavBarRightItem:callback: 方法。 跟随着源码,找到了WXNavigationDefaultImpl.m 中提供的
- (UIView *)barButton:(NSDictionary *)param position:(WXNavigationItemPosition)position
        withContainer:(UIViewController *)container {
  ... 
  ...
 [button addTarget:self action:@selector(onClickBarButton:) forControlEvents:UIControlEventTouchUpInside];

  ...
}
  • WXNavigationDefaultImpl.m

此文件中有onClickBarButton 函数的实现

- (void)onClickBarButton:(id)sender {
 WXBarButton *button = (WXBarButton *)sender;
    if (button.instanceId) {
        if (button.nodeRef)
        {
            [[WXSDKManager bridgeMgr] fireEvent:button.instanceId ref:button.nodeRef type:@"click" params:nil domChanges:nil] ;
        }
        else
        {
            NSString *eventType;
            switch (button.position) {
                case WXNavigationItemPositionLeft:
                    eventType = @"clickleftitem";
                    break;
                case WXNavigationItemPositionRight:
                    eventType = @"clickrightitem";
                    break;
                case WXNavigationItemPositionMore:
                    eventType = @"clickmoreitem";
                    break;
                default:
                    break;
            }
            
           [[WXSDKManager bridgeMgr] fireEvent:button.instanceId ref:WX_SDK_ROOT_REF type:eventType params:nil domChanges:nil];
        }
    }
}

从源码中可以看出,最终navive端(fireEvent)发送了一个消息到js,而且这个消息需要在根元素中进行扑获,如:

<template>
    <div class="wrapper" @clickrightitem="onRightItemClick">
       
    </div>
    
</template>

相关文章

网友评论

      本文标题:weex navigator item 单击事件

      本文链接:https://www.haomeiwen.com/subject/xcrkiftx.html