2012-01-23 7 views
1

私はウェブサイトのログインページをスキップしようとしているので、ユーザーにもっと美しい魅力的なログインページを与え、未来。今まで私は2つのUITextFieldとUIButtonを持っていました。ユーザーはユーザー名とパスワードを入力し、UIButtonを押すとその詳細がサイトログインページの実際のWebフォームに入力され、後続の「ログイン」ページがUIWebViewに表示されます。アプリケーションがユーザーをログインしている間、WebViewは非表示になり、「ログイン」ページがロードされたときに表示されます。UIWebViewのHTML Webフォームで 'action'を呼び出す

webformにデータを埋め込むことができましたが、実際には送信できません。私は非常に簡単な解決策があると確信しています!

これは私がこれまでに持っていたコードですが、もっと良い方法があれば私にこれを知らせてください!

-(IBAction)login:(id)sender 
{ 
    // Create js strings  
    NSString *loadUsernameJS = [NSString stringWithFormat:@"var username = document.getElementsByName('username')[0]; username.value='%@';", username.text]; 
    NSString *loadPasswordJS = [NSString stringWithFormat:@"var password = document.getElementsByName('password')[0]; password.value='%@';", password.text];  

    // Autofill the form - this works, and I can see the values being put into the webform 
    [self.webView stringByEvaluatingJavaScriptFromString: loadUsernameJS]; 
    [self.webView stringByEvaluatingJavaScriptFromString: loadPasswordJS]; 

     // This is the method I have tried to submit the form, but nothing happens (ct100 is the ID of the form). 

    [self.webView stringByEvaluatingJavaScriptFromString:@"document.ct100.submit();"]; 

} 

答えて

0

試してみてください。

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"ct100\").submit()"]; 

あなたのビューコントローラがUIWebViewDelegateプロトコルを実装してのUIWebViewのdelegateとしての地位を設定する必要があります。 webView:shouldStartLoadWithRequest(後のコードを参照)からYESを返すと、フォームが送信しているURLにウェブビューでナビゲートすることができます。アプローチ以下

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSLog(@"Allow navigation to request = %@", request); 
    return YES; 
} 
+0

返事Sanjitに感謝、残念ながらまだ運がない!なぜこれが動作していないのか分かりません。 – Luke

+0

webViewを実装しましたか:shouldStartLoadWithRequest:navigationType:あなたのUIWebViewDelegate実装には? WebビューがサブミットURLにナビゲートするためには、指定されたリクエストに対してYESを返す必要があります。 –

+0

私はこれに少し新しくなっています。具体的な要求については、どうやったらもっと詳しく説明できますか? – Luke

1

Put this code inside the didFinishLoading Method Of UIWebView Protocol 

はパスワードを記入し、ユーザーID

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('username').value = 'userId'"]; 

を記入し、あなたに役立つかもしれない

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('password').value = 'password'"]; 

コールここで

[webView 
stringByEvaluatingJavaScriptFromString:@"document.forms['login_form'].submit();"]; 

以下のようにボタンを提出login_form

注フォームあなたの名前である:あなたは資格が[送信]ボタンをクリック埋めた後、一つのことを管理する必要がします。 UIWebViewの読み込みの繰り返しを避けるために、BOOLやその他のものを作成する必要があります。

関連する問題