| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430 |
- //
- // DocumentViewController.m
- // AntsContract
- //
- // Created by Ray on 12/16/16.
- // Copyright © 2016 United Software Applications, Inc. All rights reserved.
- //
- #define NUMBERS @"0123456789.\n"
- #import "PageViewController.h"
- #import "config.h"
- #import "const.h"
- #import "SignatureListViewController.h"
- #import "SignatureViewController.h"
- #import "PDFUtils.h"
- #import "ImageUtils.h"
- #import "TextUtils.h"
- #import "CheckSelectorViewController.h"
- #import "DatePickerViewController.h"
- #import "RAUtils.h"
- #import "AppDelegate.h"
- #import "TouchLabel.h"
- #import "EnumSelectViewController.h"
- typedef enum {
- ScreenOrientationUnknown = 0,
- ScreenOrientationPortrait = 1,
- ScreenOrientationLand = 3
- }ScreenOrientation;
- //#import "TouchImageView.h"
- @interface PageViewController ()
- @property (nonatomic,assign) ScreenOrientation orientation;
- @property (nonatomic,assign) ScreenOrientation currentAppOrientation;
- @end
- @implementation PageViewController
- - (BOOL)canBecomeFirstResponder{
- return YES;
- }
- //- (IBAction)onBtnClick:(id)sender {
- // [self becomeFirstResponder];
- // UIView* v = sender;
- //
- // UIMenuItem *detail = [[UIMenuItem alloc] initWithTitle:@"abc" action:@selector(showDetail:)];
- // // [detail setValue:_id forKey:@"_id"];
- //
- // UIMenuController *menu = [UIMenuController sharedMenuController];
- //
- // [menu setMenuItems:[NSArray arrayWithObjects:detail, nil]];
- //
- // [menu setTargetRect:v.frame inView:v.superview];
- // [menu setMenuVisible:YES animated:YES];
- //}
- - (ScreenOrientation)currentAppOrientation {
- CGSize screenSize = [UIScreen mainScreen].bounds.size;
- if (screenSize.width > screenSize.height) return ScreenOrientationLand;
- return ScreenOrientationPortrait;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- //
- // self.pdfScrollView = [[PDFScrollView alloc]initWithFrame:CGRectMake(0, 64, 768, 960)];
- // self.pdfScrollView.backgroundColor= [UIColor redColor];
-
- //self.edgesForExtendedLayout = UIRectEdgeNone;
- // self.pageIndex=1;
-
- // self.pdfPageView.pageIndex=self.pageIndex;
- self.pdfPageView.pageRef= self.pageRef;
-
- self.pdfScrollView.contentSize = self.pdfScrollView.frame.size;
- self.keyboard_h=0;
- // self.pdfScrollView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);
- // [self initControl];
-
- // UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc]
- // initWithTarget:self
- // action:@selector(handlePinch:)];
- //
- // [self.view addGestureRecognizer:pinchGestureRecognizer];
-
- // Do any additional setup after loading the view.
- self.orientation = ScreenOrientationUnknown;
-
- // self.pdfScrollView.backgroundColor = [UIColor redColor];
- // [self.pdfScrollView viewWithTag:1024].backgroundColor = [UIColor orangeColor];
- // self.pdfPageView.backgroundColor = [UIColor yellowColor];
- // self.editControlView.backgroundColor = [UIColor colorWithRed:0.4 green:0.8 blue:0.3 alpha:0.5];
- //
- // [self.pdfPageView removeFromSuperview];
- // [self.editControlView removeFromSuperview];
- // self.view.backgroundColor = [UIColor blueColor];
- }
- -(void)viewWillAppear:(BOOL)animated
- {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
-
- // 键盘高度变化通知,ios5.0新增的
- #ifdef __IPHONE_5_0
- float version = [[[UIDevice currentDevice] systemVersion] floatValue];
- if (version >= 5.0) {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
- }
- #endif
-
- // self.pdfScrollView.contentSize = self.pdfScrollView.frame.size;
-
-
-
- }
- - (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
- if (self.orientation != ScreenOrientationUnknown) {
- if (self.orientation == self.currentAppOrientation) {
- // 修复未完全显示时停止拖动,再进入该页面就不会生成Control控件
- if (self.editControlView.subviews.count) {
- [self refreshControl];
- } else {
- [self initControl];
- }
-
-
- } else {
- [self rotateView];
- }
- } else {
- [self initControl];
- }
- [self.parentViewController.view layoutIfNeeded];
- }
- - (void)viewWillLayoutSubviews {
-
- /*
- * 解决旋转后第二个视图覆盖部分当前视图
- */
-
- [self clearControlView];
-
- self.pdfScrollView.scrollEnabled = NO;
- // root
- [self updateView:self.view];
-
- // scroll
- [self updateView:self.pdfScrollView];
-
- // 1024 view
- [self updateView:[self.pdfScrollView viewWithTag:1024]];
-
- // pdf
- [self updateView:self.pdfPageView];
- // NSLog(@"pdf page frame %@",[NSValue valueWithCGRect:self.pdfPageView.frame]);
- [self.pdfPageView setNeedsDisplay];
-
- // edit
- [self updateView:self.editControlView];
-
- // contentSize
- self.pdfScrollView.contentSize = [self.pdfScrollView viewWithTag:1024].bounds.size;
- self.pdfScrollView.contentOffset = CGPointZero;
-
- [self initControl];
-
- [self.view setNeedsDisplay];
-
- self.pdfScrollView.scrollEnabled = YES;
-
- }
- - (void)clearControlView {
- for (UIView * v in self.editControlView.subviews)
- {
- [v removeFromSuperview ];
- }
- }
- - (void)rotateView {
- if (self.orientation == self.currentAppOrientation) return;
- [self viewWillLayoutSubviews];
-
- self.orientation = self.currentAppOrientation;
-
- for (UIViewController *vc in self.parentViewController.childViewControllers) {
- [vc viewWillLayoutSubviews];
- }
-
- }
- - (void)updateView:(UIView *)view {
- // return;
- if (!view) return;
- CGRect frame = [UIScreen mainScreen].bounds;
-
- if (view == self.view) {
-
- } else if (view == self.pdfScrollView) {
- frame.origin.y = 64;
- frame.size.height -= 64;
- self.pdfScrollView.contentSize = CGSizeZero;
- } else {
- frame.size.height -= 64;
- view.transform = CGAffineTransformIdentity; // 解决缩放后,旋转屏幕。产生偏差(ContentSize和ContentOffset)
- }
-
- view.frame = frame;
- view.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
-
- [view layoutIfNeeded];
- [view setNeedsDisplay];
- }
- -(void) viewWillDisappear:(BOOL)animated
- {
- [self.hotTextView endEditing:true];
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- self.orientation = self.currentAppOrientation;
- }
- -(void) refreshPage
- {
- [self viewDidLoad];
- [self.pdfPageView setNeedsDisplay];
- // [self viewDidAppear:YES];
- }
- -(void) dealloc
- {
- // CFBridgingRelease(self.pageRef);
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- //- (void) handlePinch:(UIPinchGestureRecognizer*) recognizer
- //{
- //// recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
- //// recognizer.scale = 1;
- //
- // CGSize contentsize =self.pdfScrollView.contentSize;
- //
- // self.pdfScrollView.contentSize = CGSizeMake(contentsize.width*recognizer.scale, contentsize.height*recognizer.scale);
- //}
- //+(CGRect)WindowRect2PDFRect:(CGRect)rect pdf_rect:(CGRect)pdf_rect window_size:(CGSize)window_size
- //{
- // CGRect pdf_expand;
- // float offset_x = 0;
- // float offset_y = 0;
- // float scale =1;
- // if(pdf_rect.size.height>=pdf_rect.size.width)
- // {
- // pdf_expand = CGRectMake(0, 0, pdf_rect.size.height*window_size.width/window_size.height, pdf_rect.size.height);
- // offset_x = (pdf_expand.size.width-pdf_rect.size.width)/2;
- // scale = pdf_rect.size.height/window_size.height;
- //
- // }
- // else
- // {
- // pdf_expand = CGRectMake(0, 0, pdf_rect.size.width, pdf_rect.size.width*window_size.height/window_size.width);
- // offset_y = (pdf_expand.size.height-pdf_rect.size.height)/2;
- // scale = pdf_rect.size.width/window_size.width;
- // }
- // float x=rect.origin.x*scale-offset_x;
- // float y=rect.origin.y*scale-offset_y;
- // float width = rect.size.width*scale;
- // float height = rect.size.height*scale;
- //
- // return CGRectMake(x, y, width, height);
- //
- //}
- -(CGRect) scaleControl:(CGRect) frame from:(CGSize)fwindowsize to:(CGSize)twindowsize
- {
- CGRect pdfsize=CGPDFPageGetBoxRect(self.pageRef, kCGPDFMediaBox);
- frame=[PDFUtils WindowRect2PDFRect:frame pdf_rect:pdfsize window_size:fwindowsize];
-
- frame= [PDFUtils PDFRect2WindowRect:frame pdf_rect:pdfsize window_size:twindowsize];
-
- return frame;
-
- }
- -(void) initControl
- {
-
- if(self.hide_control)
- return;
- // return;
- [self clearControlView]; // fill all时未显示。
- int count = [self.page_controlTemplate[@"count"] intValue];
- for(int i=0;i<count;i++)
- {
- NSMutableDictionary * control =self.page_controlTemplate [[NSString stringWithFormat:@"control_%d",i] ];
- if([control[@"type"] isEqualToString:@"TextView"])
- {
- [self addTextView:control destView:self.editControlView index:i];
- }
- if([control[@"type"] isEqualToString:@"TouchLabel"])
- {
- [self addTouchLabel:control destView:self.editControlView index:i];
- }
- else if([control[@"type"] isEqualToString:@"Button"])
- {
- [self addButton:control destView:self.editControlView index:i];
-
- }
- else if([control[@"type"] isEqualToString:@"Check"])
- {
- [self addCheck:control destView:self.editControlView index:i];
-
- }
- else if([control[@"type"] isEqualToString:@"Signature"])
- {
- [self addSignatureButton:control destView:self.editControlView index:i];
-
- }
- else if([control[@"type"] isEqualToString:@"Image"])
- {
- [self addImage:control destView:self.editControlView index:i];
-
- }
- else if([control[@"type"] isEqualToString:@"Label"])
- {
- [self addLabel:control destView:self.editControlView index:i];
-
- }
- else if([control[@"type"] isEqualToString:@"DatePicker"])
- {
- [self addDatePicker:control destView:self.editControlView index:i];
-
- }
- }
-
- }
- -(void) refreshControl
- {
- int count = [self.page_controlTemplate[@"count"] intValue];
- for(int i=0;i<count;i++)
- {
- NSString* controlname =[NSString stringWithFormat:@"control_%d",i];
- NSMutableDictionary * control =self.page_controlTemplate [ controlname];
-
-
- // if([control[@"type"] isEqualToString:@"TextView"])
- // {
- // UITextView* tv = (UITextView*) [self findControl:controlname];
- // tv.text = control[@"value"];
- // }
- // else if([control[@"type"] isEqualToString:@"Button"])
- // {
- // [self addButton:control destView:self.editControlView index:i];
- //
- // }
- // else if([control[@"type"] isEqualToString:@"Check"])
- // {
- // [self addCheck:control destView:self.editControlView index:i];
- //
- // }
- // else
- if([control[@"type"] isEqualToString:@"Signature"])
- {
- TouchImageView* btn = (TouchImageView*) [self findControl:controlname];
- NSString* file =control[@"value"];
-
- NSData* img_data=[ImageUtils load_img:file];
-
- if(img_data!=nil)
- {
-
- UIImage* image=[UIImage imageWithData:img_data];
- btn.image = image;
-
- }
-
- }
- // else if([control[@"type"] isEqualToString:@"Image"])
- // {
- // [self addImage:control destView:self.editControlView index:i];
- //
- // }
- // else if([control[@"type"] isEqualToString:@"Label"])
- // {
- // [self addLabel:control destView:self.editControlView index:i];
- //
- // }
- // else if([control[@"type"] isEqualToString:@"DatePicker"])
- // {
- // [self addDatePicker:control destView:self.editControlView index:i];
- //
- // }
- }
- }
- -(void)EndEditing
- {
- [[self view] endEditing:YES];
- }
- -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
- {
- if (self.presentedViewController) {
- [self.presentedViewController dismissViewControllerAnimated:NO completion:nil];
- }
-
- }
- - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
- [self rotateView];// 在此重新布局使视图在旋转过程中减少卡顿,更自然。
- }
- -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
- {
- // [self rotateView];
-
- // [self initControl];
- //// [self.pdfPageView setNeedsLayout];
- // [self.pdfPageView setNeedsDisplay];
- //// UIDeviceOrientation dev_ori = [[UIDevice currentDevice]orientation];
- //
- //// UIApplication * app = [UIApplication sharedApplication];
- //// AppDelegate *appDelegate = (AppDelegate *)[app delegate];
- //// [appDelegate didRotated];
- //
- // // UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];
- // // if (UIInterfaceOrientationIsLandscape(orientation)|| UIInterfaceOrientationIsPortrait(orientation))
- // // {
- // // self.orientation = orientation;
- // // [self.collectionview.collectionViewLayout invalidateLayout];
- // // DebugLog(@"routed");
- // // }
- //
-
-
-
- }
- #pragma mark add controls
- -(bool) checkActionCondition:(NSString*) condition
- {
- if([condition isEqualToString:@"true"])
- return true;
- if([condition isEqualToString:@"false"])
- return false;
- if([condition isEqualToString:@"control_18:[value]==0"])
- {
- NSArray* arr= self.page_controlTemplate[@"control_18"][@"value"];
- if(arr.count==0)
- return false;
- else
- return [arr[0] intValue]==0;
- }
-
- return false;
- }
- -(UIView*) findControl:(NSString*)controlName
- {
- controlName=[controlName stringByReplacingOccurrencesOfString:@"control_" withString:@""];
- int d_idx = [controlName intValue];
- return [self.view viewWithTag:d_idx+CONTROL_BASE];
- }
- -(UITextView*) findNextTV:(UITextView*)tv
- {
- long index = tv.tag - CONTROL_BASE;
-
-
-
- int count = [self.page_controlTemplate[@"count"] intValue];
- for(long i=index+1;i<count;i++)
- {
- NSMutableDictionary * control =self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",i] ];
- if(![control[@"type"] isEqualToString:@"TextView"])
- {
- continue;
- }
-
- for(UIView*v in self.editControlView.subviews)
- {
- if(v.tag==i+CONTROL_BASE)
- return (UITextView*)v;
- }
-
-
- }
- return nil;
- }
- -(void) addTextView:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
-
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
-
- UITextView* tv = [[UITextView alloc] initWithFrame:srect];
- if([template[@"next_end"] boolValue])
- tv.returnKeyType=UIReturnKeyDefault;
- else
- tv.returnKeyType=UIReturnKeyNext;
- float fontsize = [template[@"size"] floatValue];
- if(fontsize==0)
- fontsize=10;
- if(self.currentAppOrientation==ScreenOrientationLand)
- fontsize=fontsize*0.8; // 缩小字体否则textview显示不下。
- [tv setFont:[UIFont systemFontOfSize:fontsize]];
- bool isdisable = [template[@"disable"] boolValue];
-
- tv.editable = !isdisable;
- NSString* text= template[@"value"];
- if(text.length==0)
- text=@" ";
- tv.text =text;
-
-
-
- float tv_vmargin= [template[@"tv_vmargin"] floatValue];
- NSString* capital= template[@"capital"];
- UITextAutocapitalizationType capitalType=UITextAutocapitalizationTypeWords;
- if([capital isEqualToString:@"charater"])
- {
- capitalType=UITextAutocapitalizationTypeAllCharacters;
- }
- else if([capital isEqualToString:@"sentences"])
- {
- capitalType=UITextAutocapitalizationTypeSentences;
- }
- else if([capital isEqualToString:@"none"])
- {
- capitalType=UITextAutocapitalizationTypeNone;
- }
- else
- {
- capitalType=UITextAutocapitalizationTypeWords;
- }
-
- tv.autocapitalizationType=capitalType;
-
- NSMutableAttributedString* attr_str= [tv.attributedText mutableCopy];
-
- NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
-
- NSString * alignment=template[@"textAlignment"];
- paragraphStyle.alignment=NSTextAlignmentLeft; // 默认左对齐
- if([alignment.lowercaseString isEqualToString:@"center"])
- paragraphStyle.alignment=NSTextAlignmentCenter;
- else if([alignment.lowercaseString isEqualToString:@"left"])
- paragraphStyle.alignment=NSTextAlignmentLeft;
- else if([alignment.lowercaseString isEqualToString:@"right"])
- paragraphStyle.alignment=NSTextAlignmentRight;
-
- if(tv_vmargin!=0)
- paragraphStyle.lineHeightMultiple = tv_vmargin;
- // paragraphStyle.maximumLineHeight = 25.f;
- // paragraphStyle.minimumLineHeight = 15.f;
- // paragraphStyle.firstLineHeadIndent = 20.f;
- // paragraphStyle.alignment = NSTextAlignmentJustified;
- [attr_str addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0,attr_str.length)];
-
-
-
-
-
- tv.attributedText=attr_str;
- if([text isEqualToString:(@" ")])
- tv.text=@"";
-
- tv.tag = index+ CONTROL_BASE;
-
-
- tv.scrollEnabled=false;
-
- NSString* tv_format=template[@"keyboard"];
- if([tv_format isEqualToString:@"tel"])
- {
- tv.keyboardType=UIKeyboardTypePhonePad;
- }
- else if([tv_format isEqualToString:@"number"])
- {
- tv.keyboardType=UIKeyboardTypeNumberPad;
- }
- else if([tv_format isEqualToString:@"email"])
- {
- tv.keyboardType=UIKeyboardTypeEmailAddress;
- }
- else
- {
- tv.keyboardType=UIKeyboardTypeDefault;
- }
-
-
- //UIColorFromARGB(0x4066ccff);
-
- tv.backgroundColor = UIColorFromRGB(TV_BG);//[UIColor lightGrayColor];
- // tv.place
- // [btn setTitle:template[@"title"] forState:UIControlStateNormal];
- // ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged
-
-
- tv.delegate = self;
- // [btn addTarget:self action:@selector(ControlButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
- if(DEBUG_PDFSIG)
- {
-
- // [btn setBackgroundImage:[UIColor grayColor] forState:UIControlStateNormal];
- }
- [destView addSubview:tv];
- }
- -(void) addLabel:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
- UILabel* label = [[UILabel alloc] initWithFrame:srect];
- float fontsize = [template[@"size"] floatValue];
- if(fontsize==0)
- fontsize=10;
- [label setFont:[UIFont systemFontOfSize:fontsize]];
-
- NSString * alignment=template[@"textAlignment"];
-
- if([alignment.lowercaseString isEqualToString:@"center"])
- label.textAlignment=NSTextAlignmentCenter;
- else if([alignment.lowercaseString isEqualToString:@"left"])
- label.textAlignment=NSTextAlignmentLeft;
- else if([alignment.lowercaseString isEqualToString:@"right"])
- label.textAlignment=NSTextAlignmentRight;
-
-
- label.text =template[@"value"];
-
- label.tag = index+ CONTROL_BASE;
-
-
-
- //UIColorFromARGB(0x4066ccff);
-
- // tv.backgroundColor = UIColorFromRGB(TV_BG);//[UIColor lightGrayColor];
- // tv.place
- // [btn setTitle:template[@"title"] forState:UIControlStateNormal];
- // ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged
-
-
- // tv.delegate = self;
- // [btn addTarget:self action:@selector(ControlButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
- if(DEBUG_PDFSIG)
- {
-
- [label setBackgroundColor:[UIColor grayColor]];
-
- }
- [destView addSubview:label];
- }
- -(void) addTouchLabel:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
- TouchLabel * label = [[TouchLabel alloc] initWithFrame:srect] ;
- float fontsize = [template[@"size"] floatValue];
- if(fontsize==0)
- fontsize=10;
- [label setFont:[UIFont systemFontOfSize:fontsize]];
-
- NSString * alignment=template[@"textAlignment"];
-
- if([alignment.lowercaseString isEqualToString:@"center"])
- label.textAlignment=NSTextAlignmentCenter;
- else if([alignment.lowercaseString isEqualToString:@"left"])
- label.textAlignment=NSTextAlignmentLeft;
- else if([alignment.lowercaseString isEqualToString:@"right"])
- label.textAlignment=NSTextAlignmentRight;
- label.backgroundColor = UIColorFromRGB(TV_BG);//[UIColor lightGrayColor];
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(LabelTap:)];
- // tap.minimumPressDuration = 0.8; //定义按的时间
- [label addGestureRecognizer:tap];
- label.text =template[@"value"];
-
- label.tag = index+ CONTROL_BASE;
-
-
-
- //UIColorFromARGB(0x4066ccff);
-
- // tv.backgroundColor = UIColorFromRGB(TV_BG);//[UIColor lightGrayColor];
- // tv.place
- // [btn setTitle:template[@"title"] forState:UIControlStateNormal];
- // ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged
-
-
- // tv.delegate = self;
- // [btn addTarget:self action:@selector(ControlButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
- if(DEBUG_PDFSIG)
- {
-
- [label setBackgroundColor:[UIColor grayColor]];
-
- }
- [destView addSubview:label];
- }
- -(void)LabelTap:(UILongPressGestureRecognizer*)gestureRecognizer {
-
- long index = gestureRecognizer.view.tag - CONTROL_BASE;
-
-
- DebugLog(@"LabelTap tag = %ld",index);
-
- NSMutableDictionary* control_json = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ];
-
-
-
- NSString* action = control_json[@"action"];
- if ([action isEqualToString:@"enum"])
- {
- NSMutableDictionary* cadedate = control_json[@"cadedate"];
-
-
- EnumSelectViewController* enumvc =[[UIStoryboard storyboardWithName:@"CommonEditor" bundle:nil] instantiateViewControllerWithIdentifier:@"EnumSelectorViewController"];
-
- enumvc.max_select = 1;
-
-
- enumvc.cadedate = cadedate;
- enumvc.title = @"";
-
-
- enumvc.single_select =true;
-
- __weak typeof(self) weakSelf = self;
-
- enumvc.returnValue = ^(NSMutableDictionary* value){
- control_json[@"cadedate"]=value;
- int count = [[value valueForKey:@"count"] intValue];
- for(int i=0;i<count;i++)
- {
- NSDictionary* val_json =[value objectForKey:[NSString stringWithFormat:@"val_%d",i]];
- int check = [[val_json valueForKey:@"check"] intValue];
- if(check==1)
- {
- TouchLabel* label = (TouchLabel*)gestureRecognizer.view;
- label.text = [val_json valueForKey:@"value"];
- control_json[@"value"]= [val_json valueForKey:@"value"];
- break;
- }
- }
-
- // if (weakSelf) {
- // __strong typeof(weakSelf) strongSelf = weakSelf;
- // [strongSelf changePriceType:[strongSelf checkedCadedate:value]];
- // }
-
- };
-
- [self presentViewController:enumvc animated:true completion:nil];
-
- }
-
-
-
-
-
- // if(gestureRecognizer.view.tag - self.basetag < MAX_COLUMN) //header
- // return;
-
- // [UIView beginAnimations:nil context:nil];
- // [UIView setAnimationDuration:0.65];
- // long row = gestureRecognizer.view.tag/self.column_count;
- // long column = gestureRecognizer.view.tag%self.column_count;
- // if(self.fullrowselect)
- // {
- //
- // for(int i=0;i<self.column_count;i++)
- // {
- // [self viewWithTag:(row*self.column_count+i)].alpha = 0.5;
- // }
- // for(int i=0;i<self.column_count;i++)
- // {
- // [self viewWithTag:(row*self.column_count+i)].alpha = 1.0;
- // }
- //
- // }
- // else
- // {
- // gestureRecognizer.view.alpha=0.5;
- // gestureRecognizer.view.alpha=1;
- //
- // }
- // [UIView commitAnimations];
- //
- //
- // if(self.fullrowselect)
- // {
- // if (self.griddelegate && [self.griddelegate respondsToSelector:@selector(Tap:row:)])
- // [griddelegate Tap:gestureRecognizer.view row:row];
- // }
- // else
- // if (self.griddelegate && [self.griddelegate respondsToSelector:@selector(Tap:row:column:)])
- // [griddelegate Tap:gestureRecognizer.view row:row column:column];
-
- // TouchLabel* label = (TouchLabel*)gestureRecognizer.view;
- //
- //
- //
- //
- //
- // NSString * url =[self.hrefs valueForKey:label.text];
- // if(url!=nil)
- // {
- // label.textColor = [UIColor purpleColor];
- // [griddelegate Tap:label url:url];//first row is header;
- // }
-
- }
- -(void) addButton:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
- UIButton* btn = [[UIButton alloc] initWithFrame:srect];
- [btn setTitle:template[@"title"] forState:UIControlStateNormal];
- [btn setTitleColor:UIColor.blackColor forState:UIControlStateNormal];
- btn.tag = index+ CONTROL_BASE;
- // ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged
- btn.backgroundColor = UIColorFromRGB(BT_BG);
- [btn addTarget:self action:@selector(ControlButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
- if(DEBUG_PDFSIG)
- {
- // btn.backgroundColor = [UIColor lightGrayColor];
-
- // [btn setBackgroundImage:[UIColor grayColor] forState:UIControlStateNormal];
- }
- [destView addSubview:btn];
- }
- -(void) addDatePicker:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
- UIButton* btn = [[UIButton alloc] initWithFrame:srect];
-
- [btn setTitle:template[@"value"] forState:UIControlStateNormal];
- float fontsize = [template[@"size"] floatValue];
- if(fontsize==0)
- fontsize=10;
-
- if(self.currentAppOrientation==ScreenOrientationLand)
- fontsize=fontsize*0.8; // 缩小字体否则textview显示不下。
- btn.titleLabel.font = [UIFont systemFontOfSize: fontsize];
- btn.tag = index+ CONTROL_BASE;
- [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
- // ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged
- btn.backgroundColor = UIColorFromRGB(BT_BG);
- [btn addTarget:self action:@selector(ControlDatePickerClicked:) forControlEvents:UIControlEventTouchUpInside];
- if(DEBUG_PDFSIG)
- {
- // btn.backgroundColor = [UIColor lightGrayColor];
-
- // [btn setBackgroundImage:[UIColor grayColor] forState:UIControlStateNormal];
- }
- [destView addSubview:btn];
- }
- -(UIView*) createMarker:(double)size x:(double)x y:(double)y destView:(UIView*)destView
- {
-
-
- CGRect srect=[self scaleControl:CGRectMake(x,y,size,size) from:CGSizeMake(768, 960) to:destView.frame.size];
- UIView* v=[[UIView alloc] initWithFrame:srect];
- return v;
-
- }
- -(void) addCheck:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
-
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
- UIButton* btn = [[UIButton alloc] initWithFrame:srect];
-
- // ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged
- btn.tag = index+ CONTROL_BASE;
- [btn addTarget:self action:@selector(CheckButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
- UIColor* marker_bg=UIColorFromRGB(CK_BG);//[UIColor clearColor];
- if(DEBUG_PDFSIG)
- {
- btn.backgroundColor = [UIColor lightGrayColor];
- btn.alpha=0.5;
- [btn setTitle:template[@"title"] forState:UIControlStateNormal];
- // marker_bg = [UIColor redColor];
-
- // [btn setBackgroundImage:[UIColor grayColor] forState:UIControlStateNormal];
- }
- [destView addSubview:btn];
- NSArray* cadedate = template[@"cadedate"];
-
- NSArray* checkedData = self.page_controlTemplate [[NSString stringWithFormat:@"control_%d",index] ][@"value"];
- float fontsize = [template[@"size"] floatValue];
- if(fontsize==0)
- fontsize=10;
- // if(checkedData.count>0)
- // marker_bg = [UIColor clearColor];
- // else
- marker_bg=UIColorFromRGB(CK_BG);
-
- for(int i=0;i<cadedate.count;i++)
- {
- NSArray* item = cadedate[i];
- NSArray* checkmarker = item[1];
- if(checkmarker.count==0)
- {
- [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
- btn.titleLabel.font = [UIFont systemFontOfSize: fontsize];
- btn.backgroundColor = UIColorFromRGB(CK_BG);
- if([checkedData containsObject:[NSNumber numberWithLong:i]])
- {
- [btn setTitle:item[0][0] forState:UIControlStateNormal];
-
- }
- continue;
- }
- else
- {
- [btn setTitle:@"" forState:UIControlStateNormal];
- }
- UIView* marker=[self createMarker:[template[@"marker_size"] floatValue] x:[item[1][0] floatValue] y:[item[1][1] floatValue] destView:destView];
-
- marker.backgroundColor = marker_bg;
- marker.tag = CHECK_BASE+index*1000+i;
-
-
- if([checkedData containsObject:[NSNumber numberWithLong:i]])
- {
-
- marker.backgroundColor= UIColorFromRGB(CK_MK);
-
- }
- else
- {
- marker.backgroundColor= marker_bg;
- }
-
- [destView addSubview:marker];
-
- }
-
- }
- -(void) addSignatureButton:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
- TouchImageView* btn = [[TouchImageView alloc] initWithFrame:srect];
-
- btn.contentMode = UIViewContentModeScaleAspectFit;
- btn.delegate = self;
- btn.layer.borderColor = [UIColor clearColor].CGColor;
- btn.layer.borderWidth = 0;
- btn.tag = index+ CONTROL_BASE;
-
- NSString* file =template[@"value"];
-
- NSData* img_data=[ImageUtils load_img:file];
-
- if(img_data!=nil)
- {
-
- UIImage* image=[UIImage imageWithData:img_data];
- btn.image = image;
-
- }
- else
- {
- if([template[@"disable"] boolValue]&& [template[@"required"] boolValue])
- {
- AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
- UIImage* img = [UIImage imageNamed:@"na"];
- btn.image = img;
- template[@"value"]=appDelegate.na_path;
-
- }
- }
-
- btn.backgroundColor = UIColorFromRGB(SIG_BG);
- if(DEBUG_PDFSIG)
- {
-
-
- // [btn setBackgroundImage:[UIColor grayColor] forState:UIControlStateNormal];
- }
- [destView addSubview:btn];
- }
- -(void) addImage:(NSMutableDictionary*) template destView:(UIView*)destView index:(int) index
- {
- CGRect srect=[self scaleControl:CGRectMake([template[@"pos_x"] floatValue], [template[@"pos_y"] floatValue], [template[@"width"] floatValue], [template[@"height"] floatValue]) from:CGSizeMake(768, 960) to:destView.frame.size];
- UIImageView* btn = [[UIImageView alloc] initWithFrame:srect];
-
- btn.contentMode = UIViewContentModeScaleAspectFit;
-
- btn.layer.borderColor = [UIColor clearColor].CGColor;
- btn.layer.borderWidth = 0;
- btn.tag = index+ CONTROL_BASE;
-
- NSString* file =template[@"value"];
-
- NSData* img_data=[ImageUtils load_img:file];
-
- if(img_data!=nil)
- {
-
- UIImage* image=[UIImage imageWithData:img_data];
- btn.image = image;
-
- }
-
-
- btn.backgroundColor = UIColor.clearColor;//UIColorFromRGB(SIG_BG);
-
- if(DEBUG_PDFSIG)
- {
-
-
- // [btn setBackgroundImage:[UIColor grayColor] forState:UIControlStateNormal];
- }
- [destView addSubview:btn];
- }
- #pragma mark UIScrollView delegate
- - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
-
-
- UIView *subView = [scrollView viewWithTag:1024];
- return subView;
-
- }
- - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale
- {
- CGPoint contentOffsetPoint = self.pdfScrollView.contentOffset;
- CGSize contentSize =self.pdfScrollView.contentSize;//frame.size;
- // CGSize size1 = self.pdfScrollView.bounds.size;
- // NSLog(@"frame:%@ bound:%@", NSStringFromCGSize(contentSize),NSStringFromCGSize(size1) );
- contentSize.height+=self.keyboard_h;
- contentOffsetPoint.y+=self.keyboard_h;
-
-
-
- self.pdfScrollView.contentSize =contentSize;
- self.pdfScrollView.contentOffset=contentOffsetPoint;
-
- [self.pdfPageView setNeedsDisplay];
- }
- //- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
- //
- //
- //
- //}
- #pragma mark Button Click
- - (void)ControlDatePickerClicked:(UIButton *)sender {
-
-
- long index = sender.tag - CONTROL_BASE;
-
-
- if([self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"disable"] boolValue] )
- {
- return;
- }
-
- __weak __typeof(self)weakSelf = self;
- NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
- [formatter setDateFormat:@"MM/dd/yyyy"];
- NSString* date = sender.currentTitle;
-
- NSDate* currentDate =nil;
- if(date.length==0)
- currentDate=[NSDate date];
- else
- currentDate=[formatter dateFromString:date];
-
- DatePickerViewController* dpvc =[ [UIStoryboard storyboardWithName:@"CommonEditor" bundle:nil] instantiateViewControllerWithIdentifier:@"DatePickerViewController"];
-
- dpvc.pickerMode = UIDatePickerModeDate;
-
-
-
- dpvc.date = currentDate;
- dpvc.formatter = formatter;
- dpvc.labelTime.text = [formatter stringFromDate:currentDate];
-
- dpvc.blk_Set = ^(NSString* strdate)
- {
- // weakSelf.labelSignDate.text = strdate;
-
- [sender setTitle:strdate forState:UIControlStateNormal];
-
- weakSelf.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = strdate;
- weakSelf.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"]=[NSNumber numberWithBool:true];
- };
- dpvc.title=@"Please choose a date";
- [self.navigationController pushViewController:dpvc animated:true];
- }
- - (void)ControlButtonClicked:(UIButton *)sender {
- // DebugLog(@"cart sort button clicked");
-
- NSLog(@"button clicked;");
-
- if([sender.titleLabel.text isEqualToString:@"Initial All"])
- {
-
- __weak __typeof(self)weakSelf = self;
-
-
-
- long index = sender.tag - CONTROL_BASE;
-
-
- NSMutableDictionary* control_json = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ];
-
- // CGRect cellrect_screen = [RAUtils relativeFrameForScreenWithView:trigger];
- //
- //
- // CGRect rect1=[self.view convertRect:cellrect_screen fromView:[[[UIApplication sharedApplication] delegate] window]];
- //
- // DebugLog(@"convert1 %@",NSStringFromCGRect(rect1));
- // SignatureListViewController *signatureVC = [ [UIStoryboard storyboardWithName:@"signature" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"SignatureListViewController"];
- // signatureVC.title=@"Signatures";
- // signatureVC.signatureData = self.signatureData;
- // signatureVC.subType = control_json[@"name"];
- // signatureVC.can_fill= [control_json[@"can_fill"] boolValue];
- // signatureVC.signature_ratio= sender.frame.size;
-
- // signatureVC.imageView = touchImageView;
-
- // signatureVC.blk_Select =^(NSString* file)
- // {
- //
- //
- //
- // // NSString* file_name=[file lastPathComponent];
- //
- // NSData* img_data=[ImageUtils load_img:file];
- //
- // if(img_data!=nil)
- // {
- //
- // UIImage* image=[UIImage imageWithData:img_data];
- // touchImageView.image = image;
- //
- // long index = touchImageView.tag - CONTROL_BASE;
- // weakSelf.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = file;
- // weakSelf.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"] = [NSNumber numberWithBool:true];
- // }
- //
- // };
- // signatureVC.blk_Fill =^(NSString* file,bool fillFullDoc)
- // {
- //
- // if(weakSelf.blk_Fill)
- // weakSelf.blk_Fill(file,control_json[@"name"],fillFullDoc);
- // // for(int j=0;j<[self.controlTemplate[@"count"] intValue];j++)
- // // {
- // // NSMutableDictionary* dest =self.controlTemplate[[NSString stringWithFormat:@"control_%d",j]];
- // // NSString* type = dest[@"type"];
- // // if(![type isEqualToString:@"Signature"])
- // // continue;
- // // if([dest[@"name"] isEqualToString:control_json[@"name"]])
- // // {
- // // dest[@"value"]=file;
- // // }
- // // }
- // [weakSelf refreshControl];
- //
- // // // NSString* file_name=[file lastPathComponent];
- // //
- // // NSData* img_data=[ImageUtils load_img:file];
- // //
- // // if(img_data!=nil)
- // // {
- // //
- // // UIImage* image=[UIImage imageWithData:img_data];
- // // touchImageView.image = image;
- // //
- // // long index = touchImageView.tag - CONTROL_BASE;
- // // self.controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = file;
- // //
- // // }
- //
- // };
- // signatureVC.blk_Add = ^()
- {
-
- __block UIImage* signimg=nil;
- SignatureViewController * vc =[ [UIStoryboard storyboardWithName:@"signature" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"SignatureViewController"];
- vc.title =[NSString stringWithFormat:@"Signature: %@",control_json[@"name"]];
- vc.signature_ratio= sender.frame.size;
- vc.linewidth = [control_json[@"linewidth"] intValue];
- vc.onReturnImg = ^(UIImage* img)
- {
-
-
- signimg = img;
-
- if(signimg!=nil)
- {
- NSString* file=[PDFUtils addSignature:signimg to:self.signatureData subType:@"Customer Initial"];
- // long index = sender.tag - CONTROL_BASE;
- // self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = file;
- // self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"] =[NSNumber numberWithBool:true];
-
- if(weakSelf.blk_Fill)
- weakSelf.blk_Fill(file,@"Customer Initial",true);
-
- // touchImageView.image = signimg;
- }
-
-
- };
- // orderinfoVC.url_type = URL_REMOTE;
- // orderinfoVC.request_url=URL_CARTDELIVERY;
- //
- // orderinfoVC.params = params;
- //
- // orderinfoVC.delegate=self;
- //
- // if(checked.count==count)
- // {
- // orderinfoVC.have_tail = true
- // }
-
- [self.navigationController pushViewController:vc animated:true];
-
-
-
- };
-
-
- // UINavigationController * navi = [[UINavigationController alloc] initWithRootViewController:signatureVC];
- // navi.modalPresentationStyle=UIModalPresentationPopover;
- //
- // UIPopoverPresentationController* popPc = navi.popoverPresentationController;
- // popPc.permittedArrowDirections = UIPopoverArrowDirectionAny;
- // popPc.sourceView = touchImageView;
- // popPc.delegate = nil;
-
-
-
- // [self presentViewController:navi animated:true completion:nil];
- }
- // [self.view addSubview:self.sortItemController.view];
- }
- - (void)CheckButtonClicked:(UIButton *)sender {
- // DebugLog(@"cart sort button clicked");
-
- NSLog(@"check clicked;");
-
- long index = sender.tag - CONTROL_BASE;
-
- bool single_select = [self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"single_select"] boolValue];
- bool show_detail = [self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"show_detail"] boolValue];
- NSArray* rowData = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"cadedate"];
- NSArray* checkedData = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"];
- CheckSelectorViewController *checkVC = [ [UIStoryboard storyboardWithName:@"signature" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"CheckSelectorViewController"];
-
- checkVC.blk_OK = ^(NSArray* checkedData){
-
-
-
- for(int i=0;i<rowData.count;i++)
- {
- long tag=CHECK_BASE+index*1000+i;
-
-
-
- NSArray* item = rowData[i];
- NSArray* checkmarker = item[1];
-
- // checkmarker 不显示,则显示选项内容文字。
- if(checkmarker.count==0)
- {
- sender.backgroundColor = UIColorFromRGB(CK_BG);
- if([checkedData containsObject:[NSNumber numberWithLong:i]])
- {
- [sender setTitle:item[0][0] forState:UIControlStateNormal];
- }
- // continue;
- }
- else
- {
- [sender setTitle:@"" forState:UIControlStateNormal];
- if([checkedData containsObject:[NSNumber numberWithLong:i]])
- {
- // [checkedData removeObject:[NSNumber numberWithLong:indexPath.row]];
-
- [sender.superview viewWithTag:tag].backgroundColor= [UIColor blackColor];
-
- }
- else
- {
- // [self.checkedData addObject:[NSNumber numberWithLong:indexPath.row] ];
- [sender.superview viewWithTag:tag].backgroundColor= UIColorFromRGB(CK_BG);//[UIColor clearColor];
- }
- }
-
- bool checked =[checkedData containsObject:[NSNumber numberWithLong:i]];
- if(item.count>=3) // 模板有action项
- {
- //[sender setTitle:item[0][0] forState:UIControlStateNormal];
- NSMutableDictionary* action = item[2];
- if(checked)
- {
- if([action[@"type"] isEqualToString:@"disable"] )
- {
- NSArray* disable_arr = action[@"disable"] ;
- for(int d = 0 ; d<disable_arr.count;d++)
- {
- self.page_controlTemplate [disable_arr[d] ] [@"disable"] = [NSNumber numberWithBool:true];
- NSString* s_idx =disable_arr[d];
- s_idx=[s_idx stringByReplacingOccurrencesOfString:@"control_" withString:@""];
- int d_idx = [s_idx intValue];
- ((UITextView*)[sender.superview viewWithTag:d_idx+CONTROL_BASE]).editable = false;
- }
- NSArray* enable_arr = action[@"enable"] ;
- for(int e = 0 ; e<enable_arr.count;e++)
- {
- self.page_controlTemplate [enable_arr[e] ] [@"disable"] = [NSNumber numberWithBool:false];
-
- NSString* s_idx =enable_arr[e];
- s_idx=[s_idx stringByReplacingOccurrencesOfString:@"control_" withString:@""];
- int d_idx = [s_idx intValue];
-
- ((UITextView*)[sender.superview viewWithTag:d_idx+CONTROL_BASE]).editable = true;
- }
-
-
-
-
- NSMutableDictionary* json_setval=action[@"set_val"] ;
- for(int i=0;i<[json_setval[@"count"] intValue];i++)
- {
-
- NSMutableDictionary * control = json_setval [[NSString stringWithFormat:@"item_%d",i] ];
- UITextView* tv = (UITextView*) [self findControl:control[@"control"]];
- NSString* value = control[@"value"];
-
- UITextView* tv6 = (UITextView*) [self findControl:@"control_10"];
- NSString* text = tv6.text;
- NSString* newvalue = nil;
- if([value isEqualToString:@"*0.1"])
- {
-
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
- formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
- NSString* prefix_str= self.page_controlTemplate [control[@"control"] ][@"prefix_str"];
- if(prefix_str.length==0)
- prefix_str = @"";
- text=[text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- double f = [[formatter numberFromString:text] doubleValue]*0.1;
- newvalue = [formatter stringFromNumber:[NSNumber numberWithDouble: f]];
-
- newvalue=[newvalue stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- // float f= [[text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] floatValue]*0.1;
- // newvalue = [NSString stringWithFormat:@"$ %.2f",f];
- self.page_controlTemplate [control[@"control"] ][@"value"] = newvalue;
- self.page_controlTemplate [control[@"control"] ][@"dirty"] = [NSNumber numberWithBool:true];
- }
- else if([value isEqualToString:@"*0.9"])
- {
- // float f= [[text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] floatValue]*0.9;
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
- formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
- NSString* prefix_str= self.page_controlTemplate [control[@"control"] ][@"prefix_str"];
- if(prefix_str.length==0)
- prefix_str = @"";
- text=[text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- double f = [[formatter numberFromString:text] doubleValue]*0.9;
- newvalue = [formatter stringFromNumber:[NSNumber numberWithDouble: f]];
- newvalue=[newvalue stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- // newvalue = [NSString stringWithFormat:@"$ %.2f",f];
- self.page_controlTemplate [control[@"control"] ][@"value"] = newvalue;
- self.page_controlTemplate [control[@"control"] ][@"dirty"] = [NSNumber numberWithBool:true];
- }
-
-
- tv.text = newvalue;
-
- }
- NSMutableDictionary* json_cd=action[@"conditional_constraint"][checked?@"true":@"false"] ;
- {
- for(int i=0;i<[json_cd[@"count"] intValue];i++)
- {
-
- NSMutableDictionary * destination = json_cd [[NSString stringWithFormat:@"item_%d",i] ];
- int page = [destination[@"page"] intValue];
- NSString* control = destination[@"control"];
- self.doc_controlTemplate[[NSString stringWithFormat:@"page_%d",page]][control][@"disable"]=destination[@"disable"];
- id value =destination[@"set_val"];
- self.doc_controlTemplate[[NSString stringWithFormat:@"page_%d",page]][control][@"value"]=value;
- // UITextView* tv = (UITextView*) [self findControl:destination[@"control"]];
- // NSString* value = control[@"value"];
- //
- // UITextView* tv6 = (UITextView*) [self findControl:@"control_10"];
- // NSString* text = tv6.text;
- // NSString* newvalue = nil;
- // if([value isEqualToString:@"*0.1"])
- // {
- //
- // NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
- // formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
- // NSString* prefix_str= self.page_controlTemplate [control[@"control"] ][@"prefix_str"];
- // if(prefix_str.length==0)
- // prefix_str = @"";
- // text=[text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- // double f = [[formatter numberFromString:text] doubleValue]*0.1;
- // newvalue = [formatter stringFromNumber:[NSNumber numberWithDouble: f]];
- //
- // newvalue=[newvalue stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- // // float f= [[text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] floatValue]*0.1;
- // // newvalue = [NSString stringWithFormat:@"$ %.2f",f];
- // self.page_controlTemplate [control[@"control"] ][@"value"] = newvalue;
- // self.page_controlTemplate [control[@"control"] ][@"dirty"] = [NSNumber numberWithBool:true];
- // }
- // else if([value isEqualToString:@"*0.9"])
- // {
- // // float f= [[text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] floatValue]*0.9;
- // NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
- // formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
- // NSString* prefix_str= self.page_controlTemplate [control[@"control"] ][@"prefix_str"];
- // if(prefix_str.length==0)
- // prefix_str = @"";
- // text=[text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- // double f = [[formatter numberFromString:text] doubleValue]*0.9;
- // newvalue = [formatter stringFromNumber:[NSNumber numberWithDouble: f]];
- // newvalue=[newvalue stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- // // newvalue = [NSString stringWithFormat:@"$ %.2f",f];
- // self.page_controlTemplate [control[@"control"] ][@"value"] = newvalue;
- // self.page_controlTemplate [control[@"control"] ][@"dirty"] = [NSNumber numberWithBool:true];
- // }
- //
- //
- // tv.text = newvalue;
-
- }
- }
- }
- else if([action[@"type"] isEqualToString:@"change contract"] )
- {
- NSString* pdf = action[@"contract"];
- if(self.chg_Contract)
- self.chg_Contract(pdf);
- }
-
- }
-
-
-
- }
-
- // UIView* v= sender;
-
-
- }
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"]=checkedData;
-
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"] = [NSNumber numberWithBool:true];
- };
- checkVC.rowData = rowData;
- checkVC.checkedData = [checkedData mutableCopy];
- checkVC.single_select = single_select;
- checkVC.show_detail = show_detail;
-
- checkVC.title=@"abcdefg";
- checkVC.modalPresentationStyle = UIModalPresentationFormSheet;
- [self presentViewController:checkVC animated:YES completion:nil];
-
- }
- #pragma mark TextViewDelegate
- - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
- {
- long index = textView.tag - CONTROL_BASE;
- if([text isEqualToString:@""])
- return true;
-
- if([text isEqualToString:@"\n"])
- {
- // [textView resignFirstResponder];
-
- UITextView * tv = [self findNextTV:textView];
-
- if(tv)
- [tv becomeFirstResponder];
-
- [textView resignFirstResponder];
- return false;
- }
-
- NSString* tv_format=self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"format"];
- if([tv_format isEqualToString:@"us_tel"])
- {
- NSMutableString *newString = [[textView.text stringByReplacingCharactersInRange:range withString:text] mutableCopy];
- NSArray *components = [newString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
- NSString *decimalString = [components componentsJoinedByString:@""];
-
- NSUInteger length = decimalString.length;
- BOOL hasLeadingOne = length > 0 && [decimalString characterAtIndex:0] == '1';
-
- if (length == 0 ) {
- textView.text = decimalString;
- return NO;
- }
- if((length >= 10 && !hasLeadingOne) )
- {
- if(length>15)
- return NO;
- // newString=[[newString stringByReplacingOccurrencesOfString:@"-" withString:@""] mutableCopy];
- // [newString insertString:@"-" atIndex:14];
- // textView.text = newString;
- // return NO;
- }
- if((length >= 11))
- {
- if(length>16)
- return NO;
- // newString=[[newString stringByReplacingOccurrencesOfString:@"-" withString:@""] mutableCopy];
- // [newString insertString:@"-" atIndex:16];
- // textView.text = newString;
- // return NO;
- }
- NSUInteger index = 0;
- NSMutableString *formattedString = [NSMutableString string];
-
- if (hasLeadingOne) {
- [formattedString appendString:@"1 "];
- index += 1;
- }
-
- if (length - index > 3) {
- NSString *areaCode = [decimalString substringWithRange:NSMakeRange(index, 3)];
- [formattedString appendFormat:@"(%@) ",areaCode];
- index += 3;
- }
-
- if (length - index > 3) {
- NSString *prefix = [decimalString substringWithRange:NSMakeRange(index, 3)];
- [formattedString appendFormat:@"%@ ",prefix];
- index += 3;
- }
-
- if (length - index > 4) {
- NSString *prefix = [decimalString substringWithRange:NSMakeRange(index, 4)];
- [formattedString appendFormat:@"%@-",prefix];
- index += 4;
- }
-
- NSString *remainder = [decimalString substringFromIndex:index];
- [formattedString appendString:remainder];
-
- textView.text = formattedString;
-
- return NO;
- }
- else if([tv_format isEqualToString:@"price"])
- {
- // NSMutableString *newString = [[textView.text stringByReplacingCharactersInRange:range withString:text] mutableCopy];
- // NSArray *components = [newString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
- // NSString *decimalString = [components componentsJoinedByString:@""];
- //
- //
- //
-
-
- //
- // NSString *newprice = [formatter stringFromNumber:[NSNumber numberWithInt: [decimalString intValue]]];
- //
- // textView.text = newprice;
-
-
-
- NSCharacterSet *cs;
- cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
- //
- NSString *filtered = [[text componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];
-
- BOOL canChange = [text isEqualToString:filtered];
- // if(canChange)
- // {
- //
- // }
- return canChange;
-
- // return NO;
- }
- else
- {
- NSString* oldtext =textView.text;
- if(oldtext==nil)
- oldtext=@"";
-
- bool canChange=true;
-
- int max_line = [self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"lines"] intValue];
- if(max_line==0)//默认只能有一行
- max_line=1;
- long linecount=[TextUtils countOccurencesOfString:oldtext find:@"\n"];
- if(max_line!=-1) //maxline -1表示不限制行数。
- {
- if(linecount<=max_line-1&& [text isEqualToString:@"\n"])
- {
- canChange = false;
- }
- }
-
- int lenth = [self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"length"] intValue];
- if(lenth==0)
- return canChange;
- else
- {
- return canChange&& (lenth>textView.text.length ||[text isEqualToString:@""]);
- }
- }
-
- }
- //- (void)textViewDidBeginEditing:(UITextView *)textView
- //{
- // self.hotTextView = textView;
- //}
- - (void)textViewDidBeginEditing:(UITextView *)textView
- {
- long index = textView.tag - CONTROL_BASE;
- NSString* tv_format=self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"format"];
- if([tv_format isEqualToString:@"price"])
- {
-
- NSString* prefix_str= self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"prefix_str"];
- if(prefix_str.length==0)
- prefix_str = @"";
-
-
- NSString* text =[textView.text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
-
-
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
-
- formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
- NSNumber* number= [formatter numberFromString:text];
- if(number!=nil)
- textView.text = [NSString stringWithFormat:@"%.2f",[number doubleValue]];
- }
-
- // NSRange r = textView.selectedRange;
- //
- //
- // textView.selectedRange = NSMakeRange(textView.text.length, 0);
- // NSRange range;
- //
- // range.location = textView.text.length;
- //
- // range.length = 0;
- //
- // textView.selectedRange = range;
-
- }
- - (BOOL)textViewShouldBeginEditing:(UITextView *)textView
- {
-
- NSLog(@"textViewShouldBeginEditing");
-
-
- // long index = textView.tag - CONTROL_BASE;
- //
- //
- // NSMutableDictionary* control_json = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ];
- //
- // if([control_json[@"disable"] boolValue] )
- // {
- // return false;
- // }
- //
-
-
-
- self.hotTextView = textView;//(UITableViewCell*)textView.superview.superview;
-
-
-
-
-
-
- return textView.editable;
- }
- - (void)textViewDidEndEditing:(UITextView *)textView
- {
-
- long index = textView.tag - CONTROL_BASE;
-
-
- //处理 prefix 和 浮点格式化
- NSString* prefix_str= self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"prefix_str"];
- if(prefix_str.length==0)
- prefix_str = @"";
- NSString* text =textView.text;// [textView.text stringByReplacingOccurrencesOfString:prefix_str withString:@""];
-
- NSString* value_type= self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value_type"];
- if([value_type isEqualToString:@"float"])
- text=[NSString stringWithFormat:@"%.2f",[text doubleValue] ];
-
- // text =[NSString stringWithFormat:@"%@%@",prefix_str,text] ;
-
-
- if([self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"format"] isEqualToString:@"price"])
- {
- text =textView.text;
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
-
- formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
-
-
- NSNumber * nprice =[NSNumber numberWithDouble: [text doubleValue]];
- if(text.length==0)
- nprice=nil;
- text = [formatter stringFromNumber:nprice];
- text=[text stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- // textView.text = newprice;
- // return NO;
- }
-
-
- textView.text = text;
-
- if(text==nil)
- text=@"";
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = text;
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"] =[NSNumber numberWithBool:true];
- NSDictionary* action = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"action"];
- NSArray* keys=[action allKeys];
- for(int k=0;k<keys.count;k++)
- {
- NSMutableDictionary* act_k = action[keys[k] ];
-
-
- if (![self checkActionCondition:act_k[@"condition"]])
- continue;
- for(int i=0;i<[act_k[@"count"] intValue];i++)
- {
-
- NSMutableDictionary * control = act_k [[NSString stringWithFormat:@"item_%d",i] ];
- UITextView* tv = (UITextView*) [self findControl:control[@"control"]];
- NSString* value = control[@"value"];
-
- NSString* newvalue = nil;
- if([value isEqualToString:@"*0.1"])
- {
- // double f= [[text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] doubleValue]*0.1;
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
- formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
-
- NSString* prefix_str= self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"prefix_str"];
- if(prefix_str.length==0)
- prefix_str = @"";
-
- if(text.length==0)
- {
- newvalue=nil;
- }
- else
- {
- text=[text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- double f = [[formatter numberFromString:text] doubleValue]*0.1;
-
- // if(tv==self.hotTextView)
- // {
- //
- // newvalue = [NSString stringWithFormat:@"%.2f",f];
- // }
- // else
- {
- newvalue = [formatter stringFromNumber:[NSNumber numberWithDouble: f]];
- newvalue=[newvalue stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- // newvalue = [NSString stringWithFormat:@"$ %.2f",f];
- }
- }
-
- self.page_controlTemplate [control[@"control"] ][@"value"] = newvalue;
- self.page_controlTemplate [control[@"control"] ][@"dirty"] =[NSNumber numberWithBool:true];
- }
- else if([value isEqualToString:@"*0.9"])
- {
- // double f= [[text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] doubleValue]*0.9;
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
- formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
-
- NSString* prefix_str= self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"prefix_str"];
- if(prefix_str.length==0)
- prefix_str = @"";
-
- if(text.length==0)
- {
- newvalue=nil;
- }
- else
- {
- text=[text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- double f = [[formatter numberFromString:text] doubleValue]*0.9;
- newvalue = [formatter stringFromNumber:[NSNumber numberWithDouble: f]];
- newvalue=[newvalue stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- }
- // newvalue = [NSString stringWithFormat:@"$ %.2f",f];
- self.page_controlTemplate [control[@"control"] ][@"value"] = newvalue;
- self.page_controlTemplate [control[@"control"] ][@"dirty"] = [NSNumber numberWithBool:true];
-
- }
- else if([value isEqualToString:@"control_6-control_7"])
- {
-
- UITextView* tv6 = (UITextView*) [self findControl:@"control_8"];
- // float f6= [[tv6.text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] floatValue];
- //
- // float f7= [[text stringByReplacingOccurrencesOfString:@"$" withString:@"" ] floatValue];
-
-
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
- formatter.numberStyle =kCFNumberFormatterCurrencyStyle;
-
- NSString* prefix_str= self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"prefix_str"];
- if(prefix_str.length==0)
- prefix_str = @"";
- NSString * text6=[tv6.text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- text=[text stringByReplacingOccurrencesOfString:prefix_str withString:@"$"];
- double f6 =0.0;
- // if(tv6==self.hotTextView)
- // f6=[tv6.text doubleValue];
- // else
- f6=[[formatter numberFromString:text6] doubleValue];
- double f7 = [[formatter numberFromString:text] doubleValue];
- newvalue = [formatter stringFromNumber:[NSNumber numberWithDouble: f6-f7]];
- newvalue=[newvalue stringByReplacingOccurrencesOfString:@"$" withString:prefix_str];
- // newvalue = [NSString stringWithFormat:@"$ %.2f",f6-f7];
- self.page_controlTemplate [control[@"control"] ][@"value"] = newvalue;
- self.page_controlTemplate [control[@"control"] ][@"dirty"] = [NSNumber numberWithBool:true];
- tv.text = newvalue;
- }
- else if([value isEqualToString:@"copy"])
- {
- NSString* page = control[@"page"];
- NSString* controln = control[@"control"];
- NSString* source = control[@"source"];
- if([source isEqualToString:@"2+3+4+5"])
- {
- NSString* newval;
- NSString* s2=self.page_controlTemplate[@"control_2"][@"value"];
- NSString* s3=self.page_controlTemplate[@"control_3"][@"value"];
- NSString* s4=self.page_controlTemplate[@"control_4"][@"value"];
- NSString* s5=self.page_controlTemplate[@"control_5"][@"value"];
-
- if(s2==nil)
- s2=@"";
- if(s3==nil)
- s3=@"";
- if(s4==nil)
- s4=@"";
- if(s5==nil)
- s5=@"";
-
- newval=[NSString stringWithFormat:@"%@, %@, %@ %@",s2,s3,s4,s5];
- self.doc_controlTemplate[page][controln][@"value"]=newval;
- }
- else
- self.doc_controlTemplate[page][controln][@"value"]=text;
-
- }
-
-
-
- }
- }
- // int count = [self.controlTemplate[@"count"] intValue];
- // for(int i=0;i<count;i++)
- // {
- // NSMutableDictionary * control =;
- //[self update_newprice];
- }
- /*
- #pragma mark - Navigation
-
- // In a storyboard-based application, you will often want to do a little preparation before navigation
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
- // Get the new view controller using [segue destinationViewController].
- // Pass the selected object to the new view controller.
- }
- */
- #pragma mark signature clicked
- //touchimageview Delegate
- -(void) signature:(TouchImageView *)touchImageView
- {
- __weak __typeof(self)weakSelf = self;
-
-
-
- long index = touchImageView.tag - CONTROL_BASE;
-
-
- NSMutableDictionary* control_json = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ];
-
- // CGRect cellrect_screen = [RAUtils relativeFrameForScreenWithView:trigger];
- //
- //
- // CGRect rect1=[self.view convertRect:cellrect_screen fromView:[[[UIApplication sharedApplication] delegate] window]];
- //
- // DebugLog(@"convert1 %@",NSStringFromCGRect(rect1));
- SignatureListViewController *signatureVC = [ [UIStoryboard storyboardWithName:@"signature" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"SignatureListViewController"];
- signatureVC.title=@"Signatures";
- signatureVC.signatureData = self.signatureData;
- signatureVC.subType = control_json[@"name"];
- signatureVC.can_fill= [control_json[@"can_fill"] boolValue];
- signatureVC.signature_ratio= touchImageView.frame.size;
-
- // signatureVC.imageView = touchImageView;
-
- signatureVC.blk_Select =^(NSString* file)
- {
-
-
-
- // NSString* file_name=[file lastPathComponent];
-
- NSData* img_data=[ImageUtils load_img:file];
-
- if(img_data!=nil)
- {
-
- UIImage* image=[UIImage imageWithData:img_data];
- touchImageView.image = image;
-
- long index = touchImageView.tag - CONTROL_BASE;
- weakSelf.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = file;
- weakSelf.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"] = [NSNumber numberWithBool:true];
- }
-
- };
- signatureVC.blk_Fill =^(NSString* file,bool fillFullDoc)
- {
-
- if(weakSelf.blk_Fill)
- weakSelf.blk_Fill(file,control_json[@"name"],fillFullDoc);
- // for(int j=0;j<[self.controlTemplate[@"count"] intValue];j++)
- // {
- // NSMutableDictionary* dest =self.controlTemplate[[NSString stringWithFormat:@"control_%d",j]];
- // NSString* type = dest[@"type"];
- // if(![type isEqualToString:@"Signature"])
- // continue;
- // if([dest[@"name"] isEqualToString:control_json[@"name"]])
- // {
- // dest[@"value"]=file;
- // }
- // }
- [weakSelf refreshControl];
-
- // // NSString* file_name=[file lastPathComponent];
- //
- // NSData* img_data=[ImageUtils load_img:file];
- //
- // if(img_data!=nil)
- // {
- //
- // UIImage* image=[UIImage imageWithData:img_data];
- // touchImageView.image = image;
- //
- // long index = touchImageView.tag - CONTROL_BASE;
- // self.controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = file;
- //
- // }
-
- };
- signatureVC.blk_Add = ^()
- {
-
- __block UIImage* signimg=nil;
- SignatureViewController * vc =[ [UIStoryboard storyboardWithName:@"signature" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"SignatureViewController"];
- vc.title =[NSString stringWithFormat:@"Signature: %@",control_json[@"name"]];
- vc.signature_ratio= touchImageView.frame.size;
- vc.linewidth = [control_json[@"linewidth"] intValue];
- vc.onReturnImg = ^(UIImage* img)
- {
-
-
- signimg = img;
-
- if(signimg!=nil)
- {
- NSString* file=[PDFUtils addSignature:signimg to:self.signatureData subType:control_json[@"name"]];
- long index = touchImageView.tag - CONTROL_BASE;
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = file;
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"] =[NSNumber numberWithBool:true];
- touchImageView.image = signimg;
- }
-
-
- };
- // orderinfoVC.url_type = URL_REMOTE;
- // orderinfoVC.request_url=URL_CARTDELIVERY;
- //
- // orderinfoVC.params = params;
- //
- // orderinfoVC.delegate=self;
- //
- // if(checked.count==count)
- // {
- // orderinfoVC.have_tail = true
- // }
-
- [self.navigationController pushViewController:vc animated:true];
-
-
-
- };
-
-
- UINavigationController * navi = [[UINavigationController alloc] initWithRootViewController:signatureVC];
- navi.modalPresentationStyle=UIModalPresentationPopover;
-
- UIPopoverPresentationController* popPc = navi.popoverPresentationController;
- popPc.permittedArrowDirections = UIPopoverArrowDirectionAny;
- popPc.sourceView = touchImageView;
- popPc.delegate = nil;
-
-
-
- [self presentViewController:navi animated:true completion:nil];
- }
- - (void) TouchImageViewOnLongPress:(TouchImageView *)touchImageView
- {
-
- long index = touchImageView.tag - CONTROL_BASE;
-
-
- NSMutableDictionary* control_json = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ];
-
- if([control_json[@"disable"] boolValue] )
- {
- return;
- }
-
- if(touchImageView.image!=nil)
- {
- NSLog(@"long press");
-
-
- [self becomeFirstResponder];
- UIView* v = touchImageView;
-
- self.tiv_index = v.tag;
- UIMenuItem *clear = [[UIMenuItem alloc] initWithTitle:@"Clear" action:@selector(touchImageClear:)];
- // UIMenuItem *modify = [[UIMenuItem alloc] initWithTitle:@"Modify" action:@selector(touchImageModify:)];
- // [detail setValue:_id forKey:@"_id"];
-
- UIMenuController *menu = [UIMenuController sharedMenuController];
-
-
- [menu setMenuItems:[NSArray arrayWithObjects:clear,/*modify,*/ nil]];
-
- [menu setTargetRect:v.frame inView:v.superview];
- [menu setMenuVisible:YES animated:YES];
- }
- }
- //- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
- //{
- // if (action == @selector(showDetail:))
- // return YES;//显示
- // else
- // return NO;//不显示
- //}
- - (void) touchImageClear:(id) sender
- {
- long index = self.tiv_index - CONTROL_BASE;
-
- for(UIView*v in self.editControlView.subviews)
- {
- if(v.tag==self.tiv_index)
- ((UIImageView*)v).image = nil;
- }
- // NSMutableDictionary* control_json = self.controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ];
-
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"value"] = @"";
- self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ][@"dirty"] =[NSNumber numberWithBool:true];
- }
- - (void) touchImageModify:(id) sender
- {
-
- }
- - (void)TouchImageViewOnTouche:(TouchImageView *)touchImageView
- {
-
- NSLog(@"signature button clicked;");
-
- //
- // __weak __typeof(self)weakSelf = self;
- //
- //
- //
- long index = touchImageView.tag - CONTROL_BASE;
-
-
- NSMutableDictionary* control_json = self.page_controlTemplate [[NSString stringWithFormat:@"control_%ld",index] ];
- if([control_json[@"disable"] boolValue] )
- {
- return;
- }
-
-
- bool bvalidation=[control_json[@"required_validation"] boolValue];
- NSString* pwd= control_json[@"validation_code"];
- if(bvalidation&& pwd.length>0)
- {
-
-
- //UIAlertControllerStyle两种类型UIAlertControllerStyleAlert类似UIAlertView
- //UIAlertControllerStyleActionSheet类似UIActionSheet
- UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Authorization Verification" message:@"Please enter authorization code." preferredStyle:UIAlertControllerStyleAlert];
- //block代码块取代了delegate
-
-
- [alertControl addTextFieldWithConfigurationHandler:^(UITextField *textField) {
-
-
-
- }];
-
- UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Confirm" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
-
- UITextField *name = alertControl.textFields.firstObject;
- if(![name.text isEqualToString:pwd])
- {
- [RAUtils message_alert:@"You are not authorized to change this field" title:@"Authorization verification failed." controller:self];
- return;
- }
- else
- {
- [self signature:touchImageView];
- }
-
- }];
-
- UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
- DebugLog(@"Cancel");
- return;
- }];
- [alertControl addAction:actionOne];
-
- [alertControl addAction:alertthree];
-
- //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
-
-
- [self presentViewController:alertControl animated:YES completion:nil];
-
-
-
- }
- else
- {
- [self signature:touchImageView];
- }
- //// menu.selector = self.selector;
- ////
- //// menu.selectordelegate = self;
- //
- // // 1.创建一个UIPopover
- // UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:[[UINavigationController alloc] initWithRootViewController:menu]];
- //
- //
- //
- // UIPopoverPresentationController
- // // 2.设置尺寸
- // // popover.popoverContentSize = CGSizeMake(320, 44 * 5);
- //
- // // 3.从哪里显示出来 --> 指向item
- //
- // [popover presentPopoverFromRect:self.view.frame inView:self.view permittedArrowDirections:0 animated:YES];
- // // [popover presentPopoverFromBarButtonItem:item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
- //
- //// self.popover = popover;
- // popover pop
- //
- // [self performSegueWithIdentifier:@"selector_popover" sender:self];
-
-
- // __block int tag = touchImageView.tag;
- // UIViewController* vc=[RAUtils getViewController :touchImageView];
- //
- // if(self.editable==true)
- // {
- //
- //
- // ImageUploadViewController * uploadvc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"ImageUploadViewController"];
- //
- // // UIImage* img =[self.buttonImg backgroundImageForState:UIControlStateNormal];;
- //
- // if(self.img_validate)
- // uploadvc.img= touchImageView.image;
- //
- // uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
- // {
- //
- // self.imgs[tag] = url_up;
- //
- // NSString* newurl=[RAUtils arr2string:self.imgs separator:@"," trim:false];
- //
- // touchImageView.image=img;
- //
- // if(self.imgChanged)
- // self.imgChanged(url_down,newurl,tag,url_up);
- //
- // };
- //
- // [vc.navigationController pushViewController:uploadvc animated:false];
- // }
- // else
- // {
- // if(touchImageView.image==nil)
- // return ;
- // ImageViewController * imagevc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"ImageViewController"];
- //
- //
- // UIImage* img=touchImageView.image;
- //
- // if(self.img_validate)
- // imagevc.image = img;//.imageView.image = [self.buttonImg backgroundImageForState:UIControlStateNormal];
- //
- // // uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
- // // {
- // //
- // // [self.buttonImg setBackgroundImage:img forState:UIControlStateNormal];
- // //
- // // if(self.imgChanged)
- // // self.imgChanged(url_down,url_up);
- // //
- // // };
- //
- // [vc.navigationController pushViewController:imagevc animated:false];
- // }
- // // bundleVC.content_data = self.bundle_item;
- //
-
- }
- #pragma mark Responding to keyboard events
- - (CGRect)relativeFrameForScreenWithView:(UIView *)v
- {
- UIWindow * window=[[[UIApplication sharedApplication] delegate] window];
- CGRect rect=[v convertRect: v.bounds toView:window];
- return rect;
-
-
- // BOOL iOS7 = [[[UIDevice currentDevice] systemVersion] floatValue] >= 7;
- //
- // CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
- // if (!iOS7) {
- // screenHeight -= 20;
- // }
- // UIView *view = v;
- // CGFloat x = .0;
- // CGFloat y = .0;
- // while (view.frame.size.width != 320 || view.frame.size.height != screenHeight) {
- // x += view.frame.origin.x;
- // y += view.frame.origin.y;
- // view = view.superview;
- // if ([view isKindOfClass:[UIScrollView class]]) {
- // x -= ((UIScrollView *) view).contentOffset.x;
- // y -= ((UIScrollView *) view).contentOffset.y;
- // }
- // }
- // return CGRectMake(x, y, v.frame.size.width, v.frame.size.height);
- }
- - (void)keyboardWillChangeFrame:(NSNotification *)notification {
- NSLog(@"keyboardWillChangeFrame");
- }
- - (void)keyboardWillShow:(NSNotification *)notification {
- NSLog(@"keyboardWillShow");
-
- if(self.keyboard_show)
- return;
-
- self.keyboard_show=true;
- /*
- Reduce the size of the text view so that it's not obscured by the keyboard.
- Animate the resize so that it's in sync with the appearance of the keyboard.
- */
-
- NSDictionary *userInfo = [notification userInfo];
-
- NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
- CGSize keyboardSize = [aValue CGRectValue].size;
- NSLog(@"keyboard height:%f",keyboardSize.height);
-
- CGRect cellrect_screen = [self relativeFrameForScreenWithView:self.hotTextView];
- CGRect rect_screen = [ UIScreen mainScreen ].bounds;
- int cellpos = cellrect_screen.origin.y+cellrect_screen.size.height;
- if(cellpos>rect_screen.size.height-keyboardSize.height)
- {
- // self.resize = true;
-
- self.keyboard_h =keyboardSize.height;
- CGPoint contentOffsetPoint = self.pdfScrollView.contentOffset;
- CGSize contentSize =self.pdfScrollView.contentSize;//frame.size;
- CGSize size1 = self.pdfScrollView.bounds.size;
- NSLog(@"frame:%@ bound:%@", NSStringFromCGSize(contentSize),NSStringFromCGSize(size1) );
- contentSize.height+=self.keyboard_h;
- contentOffsetPoint.y+=self.keyboard_h;
-
-
-
- self.pdfScrollView.contentSize =contentSize;
- self.pdfScrollView.contentOffset=contentOffsetPoint;
-
- }
-
-
- // self.pdfScrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height-self.keyboard_h);
-
- // CGSize tablecontent =self.editorTable.contentSize;
- // tablecontent.height=tablecontent.height+self.keyboard_h;
- // self.editorTable.contentSize=tablecontent;
- // }
- // Animate the resize of the text view's frame in sync with the keyboard's appearance.
- // [self moveInputBarWithKeyboardHeight:keyboardRect.size.height withDuration:animationDuration];
- }
- - (void)keyboardWillHide:(NSNotification *)notification {
- NSLog(@"keyboardWillHide");
-
- self.keyboard_show=false;
- // NSDictionary* userInfo = [notification userInfo];
-
- /*
- Restore the size of the text view (fill self's view).
- Animate the resize so that it's in sync with the disappearance of the keyboard.
- */
- // NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
- // NSTimeInterval animationDuration;
- // [animationDurationValue getValue:&animationDuration];
-
-
- CGPoint contentOffsetPoint = self.pdfScrollView.contentOffset;
- CGSize contentSize =self.pdfScrollView.contentSize;//frame.size;
- contentSize.height-=self.keyboard_h;
-
- contentOffsetPoint.y-=self.keyboard_h;
-
- self.pdfScrollView.contentSize=contentSize;
- self.pdfScrollView.contentOffset=contentOffsetPoint;
- // CGSize tablecontent =self.pdfScrollView.contentSize;
- // tablecontent.height=tablecontent.height-self.keyboard_h;
- // self.editorTable.contentSize=tablecontent;
-
- // self.pdfScrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
-
- self.keyboard_h= 0;
- // NSLog(@"before refresh %@",NSStringFromCGSize(self.editorTable.contentSize));
-
-
- // if(self.resize)
- // {
- // NSTimeInterval animationDuration = 0.30f;
- // CGRect frame = self.view.frame;
- // // if(prewTag == textField.tag) //当结束编辑的View的TAG是上次的就移动
- // // { //还原界面
- // // moveY = prewMoveY;
- // frame.origin.y +=self.ioffset;
- // frame.size. height -=self.ioffset;
- // self.view.frame = frame;
- // // }
- // //self.view移回原位置
- // [UIView beginAnimations:@"ResizeView" context:nil];
- // [UIView setAnimationDuration:animationDuration];
- // self.view.frame = frame;
- // [UIView commitAnimations];
- // //[textField resignFirstResponder];
- // self.ioffset=0;
- // }
-
-
- // [self moveInputBarWithKeyboardHeight:0.0 withDuration:animationDuration];
- }
- @end
|