Răsfoiți Sursa

1.修改CommonEditor键盘事件。
2.修复NPD Cart标识条在屏幕旋转时宽度不正确。
3.修复NPD Order Editor在未结束编辑时点击Front崩溃。

Pen Li 8 ani în urmă
părinte
comite
aeb6f6660d

+ 6 - 0
RedAnt ERP Mobile/HMLG Mobile.xcodeproj/project.pbxproj

@@ -59,6 +59,7 @@
 		42BEF3A41E8A4D0700632AB6 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42BEF3A31E8A4D0700632AB6 /* CoreData.framework */; };
 		42D587B81F789731006B13F5 /* HWWeakTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D587B71F789731006B13F5 /* HWWeakTimer.m */; };
 		42D587BB1F7898F7006B13F5 /* ModelDescriptionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D587BA1F7898F7006B13F5 /* ModelDescriptionController.m */; };
+		42D8CD561FC661F0005BEA15 /* CommonEditorTableContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D8CD541FC661EF005BEA15 /* CommonEditorTableContainerView.m */; };
 		42EC5FEE1FA1D84D00F8FAA4 /* FileCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EC5FEC1FA1D84D00F8FAA4 /* FileCache.m */; };
 		42EC5FEF1FA1D84D00F8FAA4 /* RAConvertor.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EC5FED1FA1D84D00F8FAA4 /* RAConvertor.m */; };
 		42EC5FF81FA1D86300F8FAA4 /* EnumModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EC5FF21FA1D86300F8FAA4 /* EnumModel.m */; };
@@ -362,6 +363,8 @@
 		42D587B71F789731006B13F5 /* HWWeakTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HWWeakTimer.m; path = common/AutoScrollImage/HWWeakTimer.m; sourceTree = SOURCE_ROOT; };
 		42D587B91F7898F7006B13F5 /* ModelDescriptionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ModelDescriptionController.h; path = common/Functions/modelDetail/ModelDescriptionController.h; sourceTree = SOURCE_ROOT; };
 		42D587BA1F7898F7006B13F5 /* ModelDescriptionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ModelDescriptionController.m; path = common/Functions/modelDetail/ModelDescriptionController.m; sourceTree = SOURCE_ROOT; };
+		42D8CD541FC661EF005BEA15 /* CommonEditorTableContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonEditorTableContainerView.m; path = common/CommonEditor/CommonEditorTableContainerView.m; sourceTree = SOURCE_ROOT; };
+		42D8CD551FC661EF005BEA15 /* CommonEditorTableContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommonEditorTableContainerView.h; path = common/CommonEditor/CommonEditorTableContainerView.h; sourceTree = SOURCE_ROOT; };
 		42EC5FEA1FA1D84C00F8FAA4 /* FileCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileCache.h; path = ../../common/FileCache.h; sourceTree = "<group>"; };
 		42EC5FEB1FA1D84C00F8FAA4 /* RAConvertor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAConvertor.h; path = ../../common/RAConvertor.h; sourceTree = "<group>"; };
 		42EC5FEC1FA1D84D00F8FAA4 /* FileCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileCache.m; path = ../../common/FileCache.m; sourceTree = "<group>"; };
@@ -1266,6 +1269,8 @@
 		7183E8EF1CF29F4500524787 /* CommonEditor */ = {
 			isa = PBXGroup;
 			children = (
+				42D8CD551FC661EF005BEA15 /* CommonEditorTableContainerView.h */,
+				42D8CD541FC661EF005BEA15 /* CommonEditorTableContainerView.m */,
 				7183E8CF1CF29F4500524787 /* CommonEditorCellAction.h */,
 				7183E8D01CF29F4500524787 /* CommonEditorCellAction.m */,
 				7183E8D11CF29F4500524787 /* CommonEditorCellEdit.h */,
@@ -1884,6 +1889,7 @@
 				7183E91B1CF29F4500524787 /* EnumSelectorCell.m in Sources */,
 				7183EA061CF29FCB00524787 /* CustomerEditViewController.m in Sources */,
 				7183E9021CF29F4500524787 /* ImageScrollerView.m in Sources */,
+				42D8CD561FC661F0005BEA15 /* CommonEditorTableContainerView.m in Sources */,
 				7183EA311CF29FCB00524787 /* RetrievePassViewController.m in Sources */,
 				4289808E1E24B2C2005F1BD8 /* LineDrawable.m in Sources */,
 				7183E90D1CF29F4500524787 /* TouchImageView.m in Sources */,

+ 13 - 0
RedAnt ERP Mobile/common/CommonEditor/CommonEditorTableContainerView.h

@@ -0,0 +1,13 @@
+//
+//  CommonEditorTableContainerView.h
+//  iSales-NPD
+//
+//  Created by Jack on 2017/11/22.
+//  Copyright © 2017年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface CommonEditorTableContainerView : UIView
+
+@end

+ 41 - 0
RedAnt ERP Mobile/common/CommonEditor/CommonEditorTableContainerView.m

@@ -0,0 +1,41 @@
+//
+//  CommonEditorTableContainerView.m
+//  iSales-NPD
+//
+//  Created by Jack on 2017/11/22.
+//  Copyright © 2017年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "CommonEditorTableContainerView.h"
+
+@implementation CommonEditorTableContainerView
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
+    
+    // 首先确定点击是否在自己区域
+    if (CGRectContainsPoint(self.bounds, point)) {
+        return YES;
+    }
+    // 然后确定点击是否在自视图区域
+    for (UIView *subView in self.subviews) {
+        
+        CGRect frame = subView.frame;
+        if (CGRectContainsPoint(frame, point)) {
+            return YES;
+        }
+        
+    }
+    
+    return NO;
+}
+
+
+@end

+ 3 - 1
RedAnt ERP Mobile/common/CommonEditor/CommonEditorViewController.h

@@ -10,6 +10,7 @@
 #import "SignatureViewController.h"
 #import "EnumSelectViewController.h"
 #import "MonthPickerViewController.h"
+#import "CommonEditorTableContainerView.h"
 
 
 @interface subitem_data : NSObject
@@ -70,6 +71,7 @@
 -(void) download_success;
 @property bool keyboard_show;
 
+- (void)download_failed;
 //禁止下拉刷新
 @property bool disable_dropdown_refresh;
 
@@ -108,7 +110,7 @@
 
 #pragma mark - ==========================
 
-@property (nonatomic,strong) IBOutlet UIView *tableContainer;
+@property (nonatomic,strong) IBOutlet CommonEditorTableContainerView *tableContainer;
 
 #pragma mark - request Editor
 -(NSDictionary*)request_Editor:(NSString*) request_url params:(NSMutableDictionary*)params;

+ 42 - 8
RedAnt ERP Mobile/common/CommonEditor/CommonEditorViewController.m

@@ -260,7 +260,7 @@
     } else {
         // 在键盘事件中,使用tableContainer计算frame 保证屏幕旋转后table height正确
         if (self.tableContainer == nil) {
-            self.tableContainer = [[UIView alloc] initWithFrame:self.editorTable.frame];
+            self.tableContainer = [[CommonEditorTableContainerView alloc] initWithFrame:self.editorTable.frame];
             self.tableContainer.autoresizingMask = self.editorTable.autoresizingMask;
             CGRect frame = self.editorTable.frame;
             frame.origin.x = 0;
@@ -342,7 +342,7 @@
                 }
                 else
                 {
-                    
+                    [weakself download_failed];
                     [weakself alertMessage:[editor_json valueForKey:@"err_msg"]];
                     
                 }
@@ -706,7 +706,7 @@
                             }
                             
                             if (mfield != nil) {
-                                
+                                self.cancommit = false;
                                 [fields addObject:mfield];
                                 NSIndexPath* indexpath =[self get_indexpath1:[itemjson valueForKey:@"name"]];
                                 if(alert)
@@ -716,6 +716,8 @@
                                     self.first_miss_pos =  indexpath;
                                     
                                 }
+                            } else {
+                                [upparams setValue:[itemjson valueForKey:@"value"] forKey:[itemjson valueForKey:@"name"]];
                             }
                             
                         } else {
@@ -955,6 +957,11 @@
     
     
 }
+
+- (void)download_failed {
+    // 用于不同Child 处理失败
+}
+
 -(NSDictionary*) get_refresh_param
 {
     NSMutableDictionary* params= [[NSMutableDictionary alloc]init];
@@ -1134,6 +1141,7 @@
                 }
                 else
                 {
+                    [weakself download_failed];
                     [weakself alertMessage:[editor_json valueForKey:@"err_msg"]];
                 }
                 
@@ -5568,6 +5576,12 @@
     }
 }
 
+- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
+    
+    self.editingcell = (UITableViewCell*)textField.superview.superview;
+    return YES;
+}
+
 
 #pragma mark- img changed
 
@@ -5930,7 +5944,6 @@
     // 使用tableContainer计算frame 保证屏幕旋转后table height正确
     CGRect table_origin_screen_frame = [self.tableContainer convertRect:self.tableContainer.bounds toView:self.view.window];
     
-    
 //    NSTimeInterval duration = [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
 //    duration *= 0.0;
     CGRect end = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
@@ -5938,15 +5951,36 @@
     NSIndexPath *indexPath = [self.editorTable indexPathForCell:self.editingcell];
     
     CGRect table_frame = self.editorTable.frame;
-    if (CGRectGetMaxY(table_origin_screen_frame) > end_y) {
-        table_frame.size.height = CGRectGetHeight(table_origin_screen_frame) - (CGRectGetMaxY(table_origin_screen_frame) - end_y);
+    // table底部距离键盘顶部偏移
+    CGFloat offset = CGRectGetMaxY(table_origin_screen_frame) - end_y;
+    if (offset > 0) {
+        
+        // table -> top > offset: table.y = -offset
+        // 事实上top:topLayoutGuide
+        CGFloat topAvailableHeight = (CGRectGetMinY(table_origin_screen_frame) - self.topLayoutGuide.length);
+        if (topAvailableHeight > offset) {
+            table_frame.origin.y = -offset;
+        } else {
+            // 向上移动到topLayoutGuide,不足部分通过缩减高度到达keyboard顶部
+            table_frame.origin.y = -topAvailableHeight;
+            table_frame.size.height = (end_y - self.topLayoutGuide.length);
+        }
+        
+//        table_frame.size.height = CGRectGetHeight(table_origin_screen_frame) - (CGRectGetMaxY(table_origin_screen_frame) - end_y);
     } else {
-        table_frame.size.height = CGRectGetHeight(table_origin_screen_frame);
+//        table_frame.size.height = CGRectGetHeight(table_origin_screen_frame);
+        table_frame = self.tableContainer.bounds;
     }
 
     self.editorTable.frame = table_frame;
-    [self.editorTable scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:NO];
+    
+    CGRect cell_screen_frame = [self.editingcell convertRect:self.editingcell.bounds toView:self.view.window];
+    if (CGRectGetMaxY(cell_screen_frame) > end_y) {
+        // Cell 被键盘遮挡后才滚动
+        [self.editorTable scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:NO];
+    }
 
+    // ===============================================
     if (end_y >= [UIScreen mainScreen].bounds.size.height) {
         self.keyboard_show = NO;
     } else {

+ 8 - 7
RedAnt ERP Mobile/common/Functions/cart/CartViewController.m

@@ -789,6 +789,7 @@
     unsigned long color = strtoul([value UTF8String],0,16);
     DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, self.itemListTable.bounds.size.width, 40)];
     //  myView.backgroundColor = UIColorFromRGB(0x996633);
+    myView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
     
     myView.layer.shadowPath =[UIBezierPath bezierPathWithRect:myView.bounds].CGPath;
     
@@ -799,7 +800,7 @@
     self.sortButton.tag = 5678 + 0;
     [myView addSubview:self.sortButton];
     
-    UILabel *solabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 5.5, 90, 22)];
+    UILabel *solabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 9, 90, 22)];
     solabel.tag = 5678 + 1;
     
     solabel.textColor=UIColorFromRGB(color);
@@ -810,7 +811,7 @@
     [myView addSubview:solabel];
     CGFloat x = self.itemListTable.bounds.size.width - (768 - 320);
     
-    UILabel *contactlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 5.5, 90, 22)];
+    UILabel *contactlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)];
     contactlabel.tag = 5678 + 2;
     
     contactlabel.textColor=UIColorFromRGB(color);
@@ -821,7 +822,7 @@
     [myView addSubview:contactlabel];
     
     x = self.itemListTable.bounds.size.width - (768 - 470);
-    UILabel *modellabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 5.5, 90, 22)];
+    UILabel *modellabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)];
     modellabel.tag = 5678 + 3;
     
     modellabel.textColor=UIColorFromRGB(color);
@@ -832,7 +833,7 @@
     [myView addSubview:modellabel];
     x = self.itemListTable.bounds.size.width - (768 - 640);
     
-    UILabel *pricelabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 5.5, 90, 22)];
+    UILabel *pricelabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)];
     pricelabel.tag = 5678 + 4;
     
     pricelabel.textColor=UIColorFromRGB(color);
@@ -852,17 +853,17 @@
     [solabel sizeToFit];
     
     UILabel *contactlabel = [self.cartIndicatorBar viewWithTag:5678 + 2];
-    contactlabel.frame = CGRectMake(x, 5.5, 90, 22);
+    contactlabel.frame = CGRectMake(x, 9, 90, 22);
     [contactlabel sizeToFit];
     
     x = self.itemListTable.bounds.size.width - (768 - 470);
     UILabel *modellabel = [self.cartIndicatorBar viewWithTag:5678 + 3];
-    modellabel.frame = CGRectMake(x, 5.5, 90, 22);
+    modellabel.frame = CGRectMake(x, 9, 90, 22);
     [modellabel sizeToFit];
     
     x = self.itemListTable.bounds.size.width - (768 - 640);
     UILabel *pricelabel = [self.cartIndicatorBar viewWithTag:5678 + 4];
-    pricelabel.frame = CGRectMake(x, 5.5, 90, 22);
+    pricelabel.frame = CGRectMake(x, 9, 90, 22);
     [pricelabel sizeToFit];
 }
 

+ 12 - 0
RedAnt ERP Mobile/common/Functions/order/RAOrderEditorViewController.m

@@ -319,6 +319,9 @@ static const int totalPage = 3;
     if (self.pageIndex == 0) {
         return;
     }
+    // 结束编辑防止TextFiled在编辑中时返回,Table会Reload,此时TextFiled会结束编辑,但是Data已经改变。
+    [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
+    
     self.pageIndex--;
     
     // 1.恢复当前页面数据
@@ -352,6 +355,8 @@ static const int totalPage = 3;
     if (self.pageIndex == totalPage) {
         return;
     }
+    // 结束编辑防止TextFiled在编辑中时下一页,Table会Reload,此时TextFiled会结束编辑,但是Data已经改变。
+    [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
     
     NSMutableDictionary* upparams = [self check_cancommit:true]; // 当前页上行参数
     if(self.cancommit==false)
@@ -443,6 +448,13 @@ static const int totalPage = 3;
     
 }
 
+- (void)download_failed {
+    
+    // 恢复为前一页
+    [self frontBarItemClick:nil];
+    
+}
+
 -(NSString*) getValue:(NSString*)name
 {
     

+ 6 - 0
RedAnt ERP Mobile/iSales-GATIT.xcodeproj/project.pbxproj

@@ -44,6 +44,7 @@
 		42D3A4A21EFA6D36007A54C1 /* PhotoList.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 42D3A49D1EFA6D36007A54C1 /* PhotoList.storyboard */; };
 		42D3A4A31EFA6D36007A54C1 /* PhotoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D3A4A01EFA6D36007A54C1 /* PhotoPreviewCell.m */; };
 		42D3A4A61EFA7346007A54C1 /* VideoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D3A4A51EFA7346007A54C1 /* VideoPreviewCell.m */; };
+		42D8CD591FC6620C005BEA15 /* CommonEditorTableContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D8CD571FC6620C005BEA15 /* CommonEditorTableContainerView.m */; };
 		42D9A0231EB02DA6008AF7AF /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9A0221EB02DA6008AF7AF /* AdSupport.framework */; };
 		42D9A0251EB03994008AF7AF /* libAdIdAccess.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9A0241EB03994008AF7AF /* libAdIdAccess.a */; };
 		42DC12F11F0CD98E00A4C011 /* OrderDetailPickInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DC12F01F0CD98E00A4C011 /* OrderDetailPickInfoCell.m */; };
@@ -357,6 +358,8 @@
 		42D3A4A01EFA6D36007A54C1 /* PhotoPreviewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhotoPreviewCell.m; sourceTree = "<group>"; };
 		42D3A4A41EFA7346007A54C1 /* VideoPreviewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPreviewCell.h; sourceTree = "<group>"; };
 		42D3A4A51EFA7346007A54C1 /* VideoPreviewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoPreviewCell.m; sourceTree = "<group>"; };
+		42D8CD571FC6620C005BEA15 /* CommonEditorTableContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonEditorTableContainerView.m; path = common/CommonEditor/CommonEditorTableContainerView.m; sourceTree = SOURCE_ROOT; };
+		42D8CD581FC6620C005BEA15 /* CommonEditorTableContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommonEditorTableContainerView.h; path = common/CommonEditor/CommonEditorTableContainerView.h; sourceTree = SOURCE_ROOT; };
 		42D9A0221EB02DA6008AF7AF /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; };
 		42D9A0241EB03994008AF7AF /* libAdIdAccess.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAdIdAccess.a; sourceTree = "<group>"; };
 		42DC12EF1F0CD98E00A4C011 /* OrderDetailPickInfoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderDetailPickInfoCell.h; path = common/Functions/order/OrderDetailPickInfoCell.h; sourceTree = SOURCE_ROOT; };
@@ -1839,6 +1842,8 @@
 		71DF743A1C575E6600F2789C /* CommonEditor */ = {
 			isa = PBXGroup;
 			children = (
+				42D8CD581FC6620C005BEA15 /* CommonEditorTableContainerView.h */,
+				42D8CD571FC6620C005BEA15 /* CommonEditorTableContainerView.m */,
 				71DF743B1C575E7900F2789C /* CommonEditorCellAction.h */,
 				71DF743C1C575E7900F2789C /* CommonEditorCellAction.m */,
 				71DF743D1C575E7900F2789C /* CommonEditorCellEdit.h */,
@@ -2163,6 +2168,7 @@
 				7162A59A1C58733400AB630E /* OrderDetailInfoCell.m in Sources */,
 				7162A5471C58719D00AB630E /* RATreeView+Private.m in Sources */,
 				428980041E2490C1005F1BD8 /* NotificationNameCenter.m in Sources */,
+				42D8CD591FC6620C005BEA15 /* CommonEditorTableContainerView.m in Sources */,
 				4289802C1E2492D2005F1BD8 /* CategoryPriceViewController.m in Sources */,
 				42BEF3511E89FE1200632AB6 /* CHANGELOG.md in Sources */,
 				42BEF35A1E89FE1200632AB6 /* README.md in Sources */,

+ 6 - 0
RedAnt ERP Mobile/iSales-HOMER.xcodeproj/project.pbxproj

@@ -54,6 +54,7 @@
 		42D3A4A21EFA6D36007A54C1 /* PhotoList.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 42D3A49D1EFA6D36007A54C1 /* PhotoList.storyboard */; };
 		42D3A4A31EFA6D36007A54C1 /* PhotoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D3A4A01EFA6D36007A54C1 /* PhotoPreviewCell.m */; };
 		42D3A4A61EFA7346007A54C1 /* VideoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D3A4A51EFA7346007A54C1 /* VideoPreviewCell.m */; };
+		42D8CD531FC6619F005BEA15 /* CommonEditorTableContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D8CD511FC6619E005BEA15 /* CommonEditorTableContainerView.m */; };
 		42D9A0231EB02DA6008AF7AF /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9A0221EB02DA6008AF7AF /* AdSupport.framework */; };
 		42D9A0251EB03994008AF7AF /* libAdIdAccess.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9A0241EB03994008AF7AF /* libAdIdAccess.a */; };
 		42DC12F11F0CD98E00A4C011 /* OrderDetailPickInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DC12F01F0CD98E00A4C011 /* OrderDetailPickInfoCell.m */; };
@@ -372,6 +373,8 @@
 		42D3A4A01EFA6D36007A54C1 /* PhotoPreviewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhotoPreviewCell.m; sourceTree = "<group>"; };
 		42D3A4A41EFA7346007A54C1 /* VideoPreviewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPreviewCell.h; sourceTree = "<group>"; };
 		42D3A4A51EFA7346007A54C1 /* VideoPreviewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoPreviewCell.m; sourceTree = "<group>"; };
+		42D8CD511FC6619E005BEA15 /* CommonEditorTableContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonEditorTableContainerView.m; path = common/CommonEditor/CommonEditorTableContainerView.m; sourceTree = SOURCE_ROOT; };
+		42D8CD521FC6619F005BEA15 /* CommonEditorTableContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommonEditorTableContainerView.h; path = common/CommonEditor/CommonEditorTableContainerView.h; sourceTree = SOURCE_ROOT; };
 		42D9A0221EB02DA6008AF7AF /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; };
 		42D9A0241EB03994008AF7AF /* libAdIdAccess.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAdIdAccess.a; sourceTree = "<group>"; };
 		42DC12EF1F0CD98E00A4C011 /* OrderDetailPickInfoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderDetailPickInfoCell.h; path = common/Functions/order/OrderDetailPickInfoCell.h; sourceTree = SOURCE_ROOT; };
@@ -1857,6 +1860,8 @@
 		71DF743A1C575E6600F2789C /* CommonEditor */ = {
 			isa = PBXGroup;
 			children = (
+				42D8CD521FC6619F005BEA15 /* CommonEditorTableContainerView.h */,
+				42D8CD511FC6619E005BEA15 /* CommonEditorTableContainerView.m */,
 				71DF743B1C575E7900F2789C /* CommonEditorCellAction.h */,
 				71DF743C1C575E7900F2789C /* CommonEditorCellAction.m */,
 				71DF743D1C575E7900F2789C /* CommonEditorCellEdit.h */,
@@ -2187,6 +2192,7 @@
 				7162A5471C58719D00AB630E /* RATreeView+Private.m in Sources */,
 				428980041E2490C1005F1BD8 /* NotificationNameCenter.m in Sources */,
 				4289802C1E2492D2005F1BD8 /* CategoryPriceViewController.m in Sources */,
+				42D8CD531FC6619F005BEA15 /* CommonEditorTableContainerView.m in Sources */,
 				42BEF3511E89FE1200632AB6 /* CHANGELOG.md in Sources */,
 				42BEAB2C1FA1D0780024D647 /* EnumSelectAndSortViewController.m in Sources */,
 				42BEF35A1E89FE1200632AB6 /* README.md in Sources */,

+ 6 - 0
RedAnt ERP Mobile/iSales-NPD.xcodeproj/project.pbxproj

@@ -63,6 +63,7 @@
 		42D9A0251EB03994008AF7AF /* libAdIdAccess.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9A0241EB03994008AF7AF /* libAdIdAccess.a */; };
 		42DC12F11F0CD98E00A4C011 /* OrderDetailPickInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DC12F01F0CD98E00A4C011 /* OrderDetailPickInfoCell.m */; };
 		42DC31131D546FBE00BCD1C6 /* category.json in Resources */ = {isa = PBXBuildFile; fileRef = 42DC31121D546FBE00BCD1C6 /* category.json */; };
+		42E153C81FC57A3D00C36077 /* CommonEditorTableContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 42E153C71FC57A3D00C36077 /* CommonEditorTableContainerView.m */; };
 		42E489611EE63F4E007256A0 /* more_color_64.png in Resources */ = {isa = PBXBuildFile; fileRef = 42E489601EE63F4E007256A0 /* more_color_64.png */; };
 		42FD1A031FBD1A3000C5D9A8 /* RAOrderPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A021FBD1A3000C5D9A8 /* RAOrderPreviewController.m */; };
 		710274251CC606C4009FD219 /* UserListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 710274241CC606C4009FD219 /* UserListViewController.m */; };
@@ -387,6 +388,8 @@
 		42DC12EF1F0CD98E00A4C011 /* OrderDetailPickInfoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderDetailPickInfoCell.h; path = common/Functions/order/OrderDetailPickInfoCell.h; sourceTree = SOURCE_ROOT; };
 		42DC12F01F0CD98E00A4C011 /* OrderDetailPickInfoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OrderDetailPickInfoCell.m; path = common/Functions/order/OrderDetailPickInfoCell.m; sourceTree = SOURCE_ROOT; };
 		42DC31121D546FBE00BCD1C6 /* category.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = category.json; sourceTree = "<group>"; };
+		42E153C61FC57A3D00C36077 /* CommonEditorTableContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommonEditorTableContainerView.h; path = common/CommonEditor/CommonEditorTableContainerView.h; sourceTree = SOURCE_ROOT; };
+		42E153C71FC57A3D00C36077 /* CommonEditorTableContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CommonEditorTableContainerView.m; path = common/CommonEditor/CommonEditorTableContainerView.m; sourceTree = SOURCE_ROOT; };
 		42E489601EE63F4E007256A0 /* more_color_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = more_color_64.png; sourceTree = "<group>"; };
 		42FD1A011FBD1A3000C5D9A8 /* RAOrderPreviewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RAOrderPreviewController.h; path = common/Functions/order/RAOrderPreviewController.h; sourceTree = SOURCE_ROOT; };
 		42FD1A021FBD1A3000C5D9A8 /* RAOrderPreviewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RAOrderPreviewController.m; path = common/Functions/order/RAOrderPreviewController.m; sourceTree = SOURCE_ROOT; };
@@ -1870,6 +1873,8 @@
 				71DF744E1C575E7900F2789C /* CommonEditorCellTextView.m */,
 				71DF744F1C575E7900F2789C /* CommonEditorViewController.h */,
 				71DF74501C575E7900F2789C /* CommonEditorViewController.m */,
+				42E153C61FC57A3D00C36077 /* CommonEditorTableContainerView.h */,
+				42E153C71FC57A3D00C36077 /* CommonEditorTableContainerView.m */,
 				71DF74511C575E7900F2789C /* DatePickerViewController.h */,
 				71DF74521C575E7900F2789C /* DatePickerViewController.m */,
 				71DF74531C575E7900F2789C /* EnumSelectorCell.h */,
@@ -2125,6 +2130,7 @@
 				7162A59B1C58733400AB630E /* OrderDetailModelCell.m in Sources */,
 				7162A5E91C5899F700AB630E /* MainViewController.m in Sources */,
 				71D01B1B1E0A2055006620CE /* PDFUtils.m in Sources */,
+				42E153C81FC57A3D00C36077 /* CommonEditorTableContainerView.m in Sources */,
 				7141DD4F1C57459B00F7DF59 /* mask.c in Sources */,
 				7162A54E1C58722200AB630E /* CreditCardEditorViewController.m in Sources */,
 				7162A5C31C5873BB00AB630E /* ItemSearchFilterViewController.m in Sources */,