Ver Fonte

1.RA Image在Upload Setting界面增加键盘监听。
2.修改RA Image Open Camera,检查设备是否可用以及是否有使用权限。
3.修改RA Image删除照片后刷新当前模式视图。
4.修复RA Image在扫描Server二维码得到结果只有一行时Crash。

Pen Li há 9 anos atrás
pai
commit
3dd8f544bb

BIN
RA Image/RA Image.xcodeproj/project.xcworkspace/xcuserdata/macmini1.xcuserdatad/UserInterfaceState.xcuserstate


+ 3 - 9
RA Image/RA Image.xcodeproj/xcuserdata/macmini1.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -4,19 +4,13 @@
    version = "2.0">
    <Breakpoints>
       <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
          <BreakpointContent
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "../common/upload/RAUploadManager.m"
-            timestampString = "516079989.945584"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "155"
-            endingLineNumber = "155"
-            landmarkName = "-loadTasks"
-            landmarkType = "7">
+            scope = "0"
+            stopOnStyle = "0">
          </BreakpointContent>
       </BreakpointProxy>
    </Breakpoints>

+ 2 - 1
RA Image/RA Image/BasicModeViewController.h

@@ -22,8 +22,9 @@
 - (void)clickCameraButton;
 - (void)showBarcodeInput;
 - (void)clearPhotos;
-
+- (void)showTopImage;
 #pragma mark - 需要子类重写
 - (void)receiveImage:(UIImage *)img;
 
+
 @end

+ 54 - 15
RA Image/RA Image/BasicModeViewController.m

@@ -10,6 +10,9 @@
 #import "ScannerViewController.h"
 #import "PhotoListViewController.h"
 #import "UploadViewController.h"
+#import <AVFoundation/AVFoundation.h>
+#import <AssetsLibrary/AssetsLibrary.h>
+
 
 @interface BasicModeViewController ()<UITextFieldDelegate>
 
@@ -55,7 +58,8 @@
         return;
     }
     PhotoListViewController *photoListVC = (PhotoListViewController *)[self viewControllerInStoryboard:@"PhotoList" withId:@"PhotoListViewController"];
-    photoListVC.photos = [self.photos mutableCopy];
+//    photoListVC.photos = self.photos;
+    photoListVC.modeVC = self;
     [self.navigationController pushViewController:photoListVC animated:YES];
 }
 
@@ -78,32 +82,58 @@
 }
 
 - (void)showCamera {
+    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
+        [RAUtils message_alert:@"Camera is not available" title:@"Warning" controller:self];
+        return;
+    }
+    //相机权限
+    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
+    if (authStatus ==AVAuthorizationStatusRestricted ||//此应用程序没有被授权访问的照片数据。可能是家长控制权限
+        authStatus ==AVAuthorizationStatusDenied)  //用户已经明确否认了这一照片数据的应用程序访问
+    {
+        // 无权限 引导去开启
+        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
+        if ([[UIApplication sharedApplication]canOpenURL:url]) {
+            [[UIApplication sharedApplication]openURL:url];// 打开权限后返回应用会重启
+        } else {
+            [RAUtils message_alert:@"RA Image need Authorization to use Camera" title:@"Warning" controller:self];
+        }
+        return;
+    }
+    
     UIImagePickerController *imgPicker = [[UIImagePickerController alloc] init];
     imgPicker.delegate = self;
-    //        AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
-    //        if (status != AVAuthorizationStatusAuthorized) {
-    //            // 未授权
-    //            [RAUtils message_alert:@"please allow app use camera" title:@"Warning" controller:weakself];
-    //        } else {
+    
     imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
     imgPicker.allowsEditing = YES;
     [self presentViewController:imgPicker animated:YES completion:nil];
     
-    //        }
 }
 
 - (void)showPhotoLibrary {
+    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
+        [RAUtils message_alert:@"Photo Library is not available" title:@"Warning" controller:self];
+        return;
+    }
+    //相册权限
+    ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];
+    if (author ==ALAuthorizationStatusRestricted || author ==ALAuthorizationStatusDenied){
+        //无权限 引导去开启
+        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
+        if ([[UIApplication sharedApplication] canOpenURL:url]) {
+            [[UIApplication sharedApplication] openURL:url];
+        } else {
+            [RAUtils message_alert:@"RA Image need Authorization to use photo library" title:@"Warning" controller:self];
+        }
+        return;
+    }
     
     UIImagePickerController *imgPicker = [[UIImagePickerController alloc] init];
     imgPicker.delegate = self;
-    //        ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];
-    //        if (author != ALAuthorizationStatusAuthorized) {
-    //            [RAUtils message_alert:@"please allow app visit photo library" title:@"Warning" controller:weakself];
-    //        } else {
     imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
     imgPicker.allowsEditing = NO;
     [self presentViewController:imgPicker animated:YES completion:nil];
-    //        }
+
 }
 
 - (void)showBarcodeInput {
@@ -127,8 +157,10 @@
     
 }
 
-- (void)receiveImage:(UIImage *)img {
-    
+- (void)showTopImage {
+    NSDictionary *item = [self.photos firstObject];
+    UIImage *img = [item objectForKey:@"photo"];
+    [self receiveImage:img];
 }
 
 - (NSString *)saveImage:(UIImage *)img {
@@ -233,7 +265,8 @@
                                    @"photo" : image,
                                    @"check" : @(NO),
                                    @"file"  : [path lastPathComponent],
-                                   @"md5"   : md5
+                                   @"md5"   : md5,
+                                   @"path"  : path
                                    };
         [self.photos addObject:photoDic];
         self.photoCount++;
@@ -256,4 +289,10 @@
     self.barcode = textField.text;
 }
 
+#pragma mark - SubClass Override
+
+- (void)receiveImage:(UIImage *)img {
+    
+}
+
 @end

+ 13 - 7
RA Image/RA Image/LoginSettingViewController.m

@@ -35,6 +35,8 @@ static NSString *kScanAddress = @"ScanAddress";
     
     [self loadAddress];
     [self registListenKeyboard];
+    
+    [self internalCheckBtnClick:self.internalCheckBtn];
 }
 
 
@@ -94,13 +96,17 @@ static NSString *kScanAddress = @"ScanAddress";
                 __strong typeof(weakself) strongself = weakself;
                 
                 NSArray *dataArr = [code componentsSeparatedByString:@";"];
-                NSString *name = [dataArr objectAtIndex:0];
-                NSString *internalAddr = [dataArr objectAtIndex:1];
-                NSString *externalAddr = [dataArr objectAtIndex:2];
-                
-                strongself.nameTextField.text = name;
-                strongself.internalTextField.text = internalAddr;
-                strongself.externalTextField.text = externalAddr;
+                if (dataArr.count == 3) {
+                    NSString *name = [dataArr objectAtIndex:0];
+                    NSString *internalAddr = [dataArr objectAtIndex:1];
+                    NSString *externalAddr = [dataArr objectAtIndex:2];
+                    
+                    strongself.nameTextField.text = name;
+                    strongself.internalTextField.text = internalAddr;
+                    strongself.externalTextField.text = externalAddr;
+                } else {
+                    strongself.internalTextField.text = [dataArr firstObject];
+                }
                 
             }
             

+ 27 - 22
RA Image/RA Image/ModelModeViewController.m

@@ -95,11 +95,18 @@
     }
     AppDelegate* Appdelegate=(AppDelegate*)[UIApplication sharedApplication].delegate;
     
-    
+    NSString *manufacturer = self.manufacturer;
+    if (self.manufacturerList.count && self.manufacturer.length == 0) {
+        [RAUtils message_alert:@"You should select a manufacturer." title:@"Warning" controller:self];
+        return;
+    }
+    NSString *note = self.noteTextView.text;
     
     //prepare upload
     NSMutableArray* tasks = [NSMutableArray new];
     
+    
+    
     for(NSMutableDictionary* photo in self.photos)
     {
         
@@ -111,26 +118,24 @@
         
         task[@"url"]=Appdelegate.address;
         NSString *md5 = [photo objectForKey:@"md5"];
-        NSString *manufacturer = self.manufacturer;
-        NSString *note = self.noteTextView.text;
-        if (!manufacturer.length) {
-            manufacturer = @"";
+        
+        
+        NSMutableDictionary* params = [@{
+                                         @"user" : Appdelegate.user,
+                                         @"password" : Appdelegate.password,
+                                         @"mode":self.name,
+                                         @"barcode":self.barcode,
+                                         @"_operate":@"upload",
+                                         @"platform":@"ios",
+                                         @"md5":md5
+                                         } mutableCopy];
+        if (manufacturer) {
+            [params setObject:manufacturer forKey:@"manufacturer"];
         }
-        if (!note.length) {
-            note = @"";
+        if (note) {
+            [params setObject:note forKey:@"note"];
         }
         
-        NSDictionary* params = @{
-                                 @"user" : Appdelegate.user,
-                                 @"password" : Appdelegate.password,
-                                 @"mode":self.name,
-                                 @"barcode":self.barcode,
-                                 @"manufacturer":manufacturer,
-                                 @"note":note,
-                                 @"_operate":@"upload",
-                                 @"platform":@"ios",
-                                 @"md5":md5
-                                 };
         task[@"params"]=params;
         [tasks addObject:task];
         
@@ -163,9 +168,9 @@
 #pragma mark - Super Method
 
 - (void)receiveImage:(UIImage *)img {
-    if (img) {
-        [self.imgBtn setBackgroundImage:img forState:UIControlStateNormal];
-    }
+    
+    [self.imgBtn setBackgroundImage:img forState:UIControlStateNormal];
+    
 }
 
 - (void)setBarcode:(NSString *)barcode {
@@ -180,7 +185,7 @@
     [super setPhotoCount:photoCount];
     NSString *str = nil;
     if (photoCount > 0) {
-        str = [NSString stringWithFormat:@"%lu Photos",photoCount];
+        str = [NSString stringWithFormat:@"%lu Photos",(unsigned long)photoCount];
     } else {
         str = @"No Photos";
     }

+ 3 - 0
RA Image/RA Image/PhotoListViewController.h

@@ -8,8 +8,11 @@
 
 #import "BasicViewController.h"
 
+@class BasicModeViewController;
 @interface PhotoListViewController : BasicViewController
 
 @property (nonatomic,strong) NSMutableArray *photos;
 
+@property (nonatomic,weak) BasicModeViewController *modeVC;
+
 @end

+ 8 - 0
RA Image/RA Image/PhotoListViewController.m

@@ -9,6 +9,7 @@
 #import "PhotoListViewController.h"
 #import "PhotoCell.h"
 #import "PhotoPreviewController.h"
+#import "BasicModeViewController.h"
 
 @interface PhotoListViewController ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,PhotoCellDelegate>
 
@@ -26,6 +27,9 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
+    if (self.modeVC) {
+        self.photos = self.modeVC.photos;
+    }
     
     UIView *v = [UIView new];
     [self.view insertSubview:v atIndex:0];
@@ -62,6 +66,10 @@
         if (check) {
             [RAUtils removeFileAtPath:path];
             [self.photos removeObject:item];
+            if (self.modeVC) {
+                [self.modeVC showTopImage];
+                self.modeVC.photoCount--;
+            }
         }
     }
     [self.selectedPhotos removeAllObjects];

+ 1 - 1
RA Image/RA Image/PhotoPreviewController.m

@@ -84,7 +84,7 @@
 
 - (void)setCurrentIndex:(NSUInteger)currentIndex {
     _currentIndex = currentIndex;
-    NSString *offset = [NSString stringWithFormat:@"%ld / %ld",self.currentIndex + 1,self.photos.count];
+    NSString *offset = [NSString stringWithFormat:@"%lu / %lu",(unsigned long)self.currentIndex + 1,(unsigned long)self.photos.count];
     self.offsetLabel.text = offset;
 }
 

+ 3 - 3
RA Image/RA Image/PopModeViewController.m

@@ -120,9 +120,9 @@
 #pragma mark - Super Method
 
 - (void)receiveImage:(UIImage *)img {
-    if (img) {
-        [self.imgBtn setBackgroundImage:img forState:UIControlStateNormal];
-    }
+    
+    [self.imgBtn setBackgroundImage:img forState:UIControlStateNormal];
+    
 }
 
 - (void)setBarcode:(NSString *)barcode {

+ 3 - 0
RA Image/RA Image/Upload.storyboard

@@ -162,6 +162,9 @@
                                 <nil key="textColor"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                                <connections>
+                                    <outlet property="delegate" destination="rW7-Ba-NwZ" id="xof-xb-fnp"/>
+                                </connections>
                             </textField>
                         </subviews>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>

+ 13 - 1
RA Image/RA Image/UploadSettingController.m

@@ -11,7 +11,7 @@
 
 NSString *const kUploadSetting = @"UploadSettingKey";
 
-@interface UploadSettingController ()
+@interface UploadSettingController ()<UITextFieldDelegate>
 
 @property (strong, nonatomic) IBOutlet UISwitch *autoSwitch;
 @property (strong, nonatomic) IBOutlet UITextField *retryCountBox;
@@ -41,6 +41,8 @@ NSString *const kUploadSetting = @"UploadSettingKey";
     }
     self.autoSwitch.on = autoUpload;
     self.retryCountBox.text = [NSString stringWithFormat:@"%d",retryCount];
+    
+    [self registListenKeyboard];
 }
 
 - (void)didReceiveMemoryWarning {
@@ -71,4 +73,14 @@ NSString *const kUploadSetting = @"UploadSettingKey";
     [self.navigationController popViewControllerAnimated:YES];
 }
 
+#pragma mark - Textfield Delegate
+
+- (void)textFieldDidBeginEditing:(UITextField *)textField {
+    self.currentFirstResponder = textField;
+}
+
+- (void)textFieldDidEndEditing:(UITextField *)textField {
+    self.currentFirstResponder = nil;
+}
+
 @end