2016-07-04 10 views
0

私は3つのUITextfieldと送信ボタンを持っています。私はテキストフィールドの検証を行った。しかし、難しい部分は今来る。ログインをクリックした後、テキストフィールドのテキストをjavascriptに送信し、資格情報を検証し、検証した後、私のビューは次のビューに移動しなければなりません。UIWebView Javascript

- (IBAction) login: (id) sender 
{ 
    if (enableLogin == YES) { 
     // [self loadNextView]; 
    } 
} 

-(void)loadNextView { 

appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 
if (webViewDidFinishLoadBool == YES) { 
    [appDelegate loginUser: txtfield1.text]; 
    NSLog(@"loadNextView called"); 
} else NSLog(@"loadNextView not called"); 
} 


-(void)sendToJS { 
// NSString* htmlPath = [[NSBundle mainBundle] pathForResource:@"pathtohtml" ofType:@"html"]; 
// NSString* appHtml = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil]; 
// NSURL *baseURL = [NSURL fileURLWithPath:htmlPath]; 
// [self.webview loadHTMLString:appHtml baseURL:baseURL]; 
    NSURLRequest *myReq = [NSURLRequest requestWithURL: 
          [NSURL URLWithString: 
          [NSString stringWithFormat:@"pathtohtml.html"]]]; 
    [self.webview loadRequest:myReq]; 

if (self.webview != nil) { 
    jsCallBack = [NSString stringWithFormat: @"loginUser.login('%@', '%@', '%@');", txtfield1.text, txtfield2.text, txtfield3.text]; 
} 
} 

-(void)webViewDidStartLoad:(UIWebView *)webView { 
    NSLog(@"js loaded"); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
     [self.webview stringByEvaluatingJavaScriptFromString:jsCallBack]; 
} 

    - (BOOL)webView:(UIWebView *)webView 
shouldStartLoadWithRequest:(NSURLRequest *)request 
navigationType:(UIWebViewNavigationType)navigationType { 

    NSString *requestString = [[request URL] absoluteString]; 
    NSArray *components = [requestString componentsSeparatedByString:@":"]; 

    if ([components count] > 1 && 
     [(NSString *)[components objectAtIndex:0] isEqualToString:@"jscall"]) { 
     if([(NSString *)[components objectAtIndex:1] isEqualToString:@"myapp"]) 
     { 
      NSString *urlString = (NSString *)[components objectAtIndex:2]; 

      NSLog(@"URL STRING %@", urlString); 
      if ([urlString isEqual: @"OK"]) { 
       globalValue = YES; 
       webViewDidFinishLoadBool = YES; 
       [self loadNextView]; 
       NSLog(@"is called"); 
      } else NSLog(@"is not called"); 
     } 
     return NO; 
    } 
    return YES; 
} 

これは呼び出されていません。私はアラートを生成するシンプルな関数を作成しましたが、それでもうまくいきません。 私はviewDidLoad()でwebviewデリゲートを設定し、viewDidAppear()で試しました 。

注:My Obj Cクラスは1つのフォルダにあり、htmlファイルとjsファイルは2つの別々のフォルダにあります。フォルダ構造は変更できません。

+0

どこで 'jsCallBack'を使用しますか?私はあなたに値を与えているが、今度はそれを再び使うことを見る –

+0

@Ricardo Alves jsCallBackはページをロードするためのものです。 – Swift

+0

あなたはページにjsを追加しようとしましたか?あなたはボタンでイベントを作成することができます。 –

答えて

0

"enableLogin"がtrueになると、webviewをリロードしています。

関連する問題