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つの別々のフォルダにあります。フォルダ構造は変更できません。
どこで 'jsCallBack'を使用しますか?私はあなたに値を与えているが、今度はそれを再び使うことを見る –
@Ricardo Alves jsCallBackはページをロードするためのものです。 – Swift
あなたはページにjsを追加しようとしましたか?あなたはボタンでイベントを作成することができます。 –