RCTMJRefreshViewManager.m
2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//
// RCTMJRefreshViewManager.m
// React
//
// Created by Macbook on 2018/6/21.
// Copyright © 2018年 Facebook. All rights reserved.
//
#import "MJRefresh.h"
#import <React/RCTViewManager.h>
#import <Foundation/Foundation.h>
#import "RCTMJRefreshHeader.h"
#import <React/RCTBridge.h>
#import <React/RCTUIManager.h>
#import <React/UIView+React.h>
@interface RCTMJRefreshViewManager:RCTViewManager
@end
@implementation RCTMJRefreshViewManager
{
RCTMJRefreshHeader *header;
}
RCT_EXPORT_MODULE()
-(UIView *)view
{
header=[RCTMJRefreshHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
return header;
}
- (NSArray *)customDirectEventTypes
{
return @[
@"onMJRefresh",
@"onMJReleaseToRefresh",
@"onMJRefreshIdle",
@"onMJPulling"
];
}
RCT_EXPORT_VIEW_PROPERTY(onMJRefresh, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onMJRefreshIdle, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onMJReleaseToRefresh, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onMJPulling, RCTBubblingEventBlock);
RCT_EXPORT_METHOD(finishRefresh:(nonnull NSNumber *)reactTag)
{
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTMJRefreshHeader *> *viewRegistry) {
RCTMJRefreshHeader *view = viewRegistry[reactTag];
if (![view isKindOfClass:[RCTMJRefreshHeader class]]) {
RCTLogError(@"Invalid view returned from registry, expecting RCTBarrage, got: %@", view);
} else {
[view endRefreshing];
}
}];
}
RCT_EXPORT_METHOD(beginRefresh:(nonnull NSNumber *)reactTag)
{
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTMJRefreshHeader *> *viewRegistry) {
RCTMJRefreshHeader *view = viewRegistry[reactTag];
if (![view isKindOfClass:[RCTMJRefreshHeader class]]) {
RCTLogError(@"Invalid view returned from registry, expecting RCTBarrage, got: %@", view);
} else {
[view beginRefreshing];
}
}];
}
-(void)loadNewData
{
}
- (dispatch_queue_t)methodQueue
{
return dispatch_get_main_queue();
}
@end