Przeglądaj źródła

1.修改iOS Apex CRM增加首次加载显示HUD。
2.修改iOS Apex CRM增加加载失败提示与重试。

Pen Li 7 lat temu
rodzic
commit
305630906b

+ 36 - 0
RedAnt CRM/APEX CRM/APEX CRM.xcodeproj/project.pbxproj

@@ -27,6 +27,9 @@
 		4212ABCC21AD450A00BE4E45 /* LPShareActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 4212ABCA21AD450900BE4E45 /* LPShareActivity.m */; };
 		4214C4A521B25EC20091A528 /* NSString+RAJavascript.m in Sources */ = {isa = PBXBuildFile; fileRef = 4214C4A421B25EC20091A528 /* NSString+RAJavascript.m */; };
 		4219F1DC21C1FE5400D81DDC /* UIView+RAConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 4219F1DB21C1FE5400D81DDC /* UIView+RAConstraint.m */; };
+		421F3EB621F9B951001A4BB9 /* RAEmptyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 421F3EB021F9B951001A4BB9 /* RAEmptyView.m */; };
+		421F3EB721F9B951001A4BB9 /* UIScrollView+Empty.m in Sources */ = {isa = PBXBuildFile; fileRef = 421F3EB321F9B951001A4BB9 /* UIScrollView+Empty.m */; };
+		421F3EB821F9B951001A4BB9 /* RAEmptyDataView.m in Sources */ = {isa = PBXBuildFile; fileRef = 421F3EB421F9B951001A4BB9 /* RAEmptyDataView.m */; };
 		4232521721C491B600C77851 /* RAContactHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4232521621C491B600C77851 /* RAContactHelper.m */; };
 		4277784F21AFB98600BCF7FA /* RAMapNavigateHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4277784E21AFB98600BCF7FA /* RAMapNavigateHandler.m */; };
 		42A8A21321AE7828003B854B /* RAPhotoPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42A8A20B21AE7828003B854B /* RAPhotoPreviewController.m */; };
@@ -102,6 +105,12 @@
 		4214C4A421B25EC20091A528 /* NSString+RAJavascript.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+RAJavascript.m"; sourceTree = "<group>"; };
 		4219F1DA21C1FE5400D81DDC /* UIView+RAConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+RAConstraint.h"; sourceTree = "<group>"; };
 		4219F1DB21C1FE5400D81DDC /* UIView+RAConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+RAConstraint.m"; sourceTree = "<group>"; };
+		421F3EAF21F9B951001A4BB9 /* RAEmptyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAEmptyView.h; sourceTree = "<group>"; };
+		421F3EB021F9B951001A4BB9 /* RAEmptyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAEmptyView.m; sourceTree = "<group>"; };
+		421F3EB221F9B951001A4BB9 /* RAEmptyDataView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAEmptyDataView.h; sourceTree = "<group>"; };
+		421F3EB321F9B951001A4BB9 /* UIScrollView+Empty.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+Empty.m"; sourceTree = "<group>"; };
+		421F3EB421F9B951001A4BB9 /* RAEmptyDataView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAEmptyDataView.m; sourceTree = "<group>"; };
+		421F3EB521F9B951001A4BB9 /* UIScrollView+Empty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+Empty.h"; sourceTree = "<group>"; };
 		4232521521C491B600C77851 /* RAContactHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RAContactHelper.h; sourceTree = "<group>"; };
 		4232521621C491B600C77851 /* RAContactHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RAContactHelper.m; sourceTree = "<group>"; };
 		4277784D21AFB98600BCF7FA /* RAMapNavigateHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RAMapNavigateHandler.h; sourceTree = "<group>"; };
@@ -290,6 +299,28 @@
 			path = ../../../common/LayoutConstraint;
 			sourceTree = "<group>";
 		};
+		421F3EAE21F9B951001A4BB9 /* EmptyView */ = {
+			isa = PBXGroup;
+			children = (
+				421F3EAF21F9B951001A4BB9 /* RAEmptyView.h */,
+				421F3EB021F9B951001A4BB9 /* RAEmptyView.m */,
+			);
+			name = EmptyView;
+			path = ../../../common/EmptyView;
+			sourceTree = "<group>";
+		};
+		421F3EB121F9B951001A4BB9 /* UIScrollVIew+Empty */ = {
+			isa = PBXGroup;
+			children = (
+				421F3EB221F9B951001A4BB9 /* RAEmptyDataView.h */,
+				421F3EB421F9B951001A4BB9 /* RAEmptyDataView.m */,
+				421F3EB521F9B951001A4BB9 /* UIScrollView+Empty.h */,
+				421F3EB321F9B951001A4BB9 /* UIScrollView+Empty.m */,
+			);
+			name = "UIScrollVIew+Empty";
+			path = "../../../common/UIScrollVIew+Empty";
+			sourceTree = "<group>";
+		};
 		4232521421C491A000C77851 /* Contact */ = {
 			isa = PBXGroup;
 			children = (
@@ -454,6 +485,8 @@
 		7106E80721A684F20056DD20 /* APEX CRM */ = {
 			isa = PBXGroup;
 			children = (
+				421F3EAE21F9B951001A4BB9 /* EmptyView */,
+				421F3EB121F9B951001A4BB9 /* UIScrollVIew+Empty */,
 				4232521421C491A000C77851 /* Contact */,
 				4219F1D921C1FE5400D81DDC /* LayoutConstraint */,
 				42F53F9521B65255008EAEFC /* PresentationController */,
@@ -604,6 +637,7 @@
 			files = (
 				4277784F21AFB98600BCF7FA /* RAMapNavigateHandler.m in Sources */,
 				4212ABCC21AD450A00BE4E45 /* LPShareActivity.m in Sources */,
+				421F3EB821F9B951001A4BB9 /* RAEmptyDataView.m in Sources */,
 				4212AB9821AD25C800BE4E45 /* RAPreviewController.m in Sources */,
 				42F53F8821B617E4008EAEFC /* SignatureView.m in Sources */,
 				4212ABC521AD3C3200BE4E45 /* RADataProvider.m in Sources */,
@@ -611,7 +645,9 @@
 				7106E83D21AD1B070056DD20 /* zip.c in Sources */,
 				42A8A22321AE8603003B854B /* UIImage+RedAnt.m in Sources */,
 				7106E83B21AD1B070056DD20 /* unzip.c in Sources */,
+				421F3EB721F9B951001A4BB9 /* UIScrollView+Empty.m in Sources */,
 				42A8A21521AE7828003B854B /* PhotoPreviewCell.m in Sources */,
+				421F3EB621F9B951001A4BB9 /* RAEmptyView.m in Sources */,
 				4212ABCB21AD450A00BE4E45 /* RAShareItemProvider.m in Sources */,
 				4212ABBE21AD389200BE4E45 /* NetworkUtils.m in Sources */,
 				7106E82221A6856E0056DD20 /* WKWebTestViewController.m in Sources */,

+ 37 - 1
RedAnt CRM/APEX CRM/APEX CRM/RAWKWebView.m

@@ -25,6 +25,8 @@
 #import "RADatePickerViewController.h"
 #import "RAContactHelper.h"
 #import <Contacts/Contacts.h>
+#import "UIScrollView+Empty.h"
+#import "RAEmptyView.h"
 
 
 @interface RAWKWebView () <UINavigationControllerDelegate,UIImagePickerControllerDelegate,MFMailComposeViewControllerDelegate>
@@ -32,6 +34,10 @@
 @property (strong, nonatomic) WKWebView *wkwebView;
 @property (nonatomic,strong) NSDictionary *currentParams;
 
+@property (nonatomic,assign) BOOL initialize;///< 是否已经加载了主页
+@property (nonatomic,weak) RAProgressHUD *hud;
+@property (nonatomic,copy) NSString *url;
+
 @end
 
 @implementation RAWKWebView
@@ -79,12 +85,18 @@
     self.wkwebView.navigationDelegate = self;
     self.wkwebView.scrollView.bounces = false;
     [self addSubview:self.wkwebView];
+    
+    __weak typeof(self) weakSelf = self;
+    self.wkwebView.scrollView.emptyView = [RAEmptyView emptyViewWithTapBlk:^(id sender) {
+        [weakSelf LoadFromURL:weakSelf.url];
+    }];
 }
 
 -(void)LoadFromURL:(NSString *)url
 {
     if(self.wkwebView==nil)
         return;
+    self.url = url;
     NSURL* U=[NSURL URLWithString:url];
     NSURLRequest* request=[[NSURLRequest alloc]initWithURL:U cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30.0f];
     
@@ -886,7 +898,9 @@
 #pragma mark - WKNavigationDelegate
 
 - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
-    NSLog(@"start");
+    if (!self.initialize) {
+        self.hud = [RAProgressHUD showHUDOnView:self.ra_viewController.view];
+    }
 }
 
 - (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation {
@@ -937,6 +951,23 @@
 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
     NSLog(@"%s",__func__);
     NSLog(@"error: %@", error.localizedDescription);
+    if (self.hud) {
+        [self.hud dismiss];
+        self.hud = nil;
+    }
+    __weak typeof(self) weakSelf = self;
+    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert];
+    UIAlertAction *retryAction = [UIAlertAction actionWithTitle:@"Retry" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+        [weakSelf LoadFromURL:weakSelf.url];
+    }];
+    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+        [self.wkwebView.scrollView showEmpty];
+    }];
+    
+    [alertVC addAction:okAction];
+    [alertVC addAction:retryAction];
+    
+    [self.ra_viewController presentViewController:alertVC animated:YES completion:nil];
 }
 
 - (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {
@@ -949,6 +980,11 @@
 
 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
 {
+    if (self.hud) {
+        [self.hud dismiss];
+        self.hud = nil;
+        self.initialize = YES;
+    }
 //    self.wkwebView.scrollView.scrollEnabled = NO;
     [webView evaluateJavaScript:@"document.body.scrollHeight"
               completionHandler:^(id result, NSError *_Nullable error) {