0

UIWebViewJava スクリプト アクションを含むいくつかのボタンを含むWeb URL を開いています。このページのメールにボタンがあります このボタンを押した後、メールアドレスとメール本文を取得します

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{if( [requestString rangeOfString:@"email.com"].location!=NSNotFound){if ([MFMailComposeViewController canSendMail]){if (!mailer)
                 mailer = [[MFMailComposeViewController alloc] init];

               mailer.mailComposeDelegate = self;
                NSString *subject = [dataManager.dictTransalations objectForKey:@"71"];
                [mailer setSubject:subject];

                NSArray *toRecipients = [NSArray arrayWithObjects:distributorEmailAddress.length > 0 ? distributorEmailAddress:@"", nil];

                [mailer setToRecipients:toRecipients];
                [mailer setMessageBody:@"" isHTML:NO];
                isFromMailVC=YES;

                //[self presentViewController:mailer animated:YES completion:NULL];
                [self presentModalViewController:mailer animated:YES];
                }}return NO;} 

- (void)mailComposeController(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error{
switch (result)
{
    case MFMailComposeResultCancelled:
    NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued.");
    break;
    case MFMailComposeResultSaved:
    NSLog(@"Mail saved: you saved the email message in the drafts folder.");
    break;
    case MFMailComposeResultSent:
    NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send.");
    break;
    case MFMailComposeResultFailed:
    NSLog(@"Mail failed: the email message was not saved or queued, possibly due to an error.");
    break;
    default:
    NSLog(@"Mail not sent.");
    break;
}
[controller dismissModalViewControllerAnimated:YES];
NSLog(@" Mail Composer Error = %@",error);
}

Java スクリプトを閉じた後mailComposeController UIWebView、他のボタンでは機能せず、別のタブでも製品リストを含む別の Web URL にアクセスすると、頭の画像が空白で表示されます。

ドキュメントディレクトリのキャッシュにデータが表示されると、Listテーブルの100000.dbにあります。

mailcompose を開いて閉じた後に読み込まれない理由はわかりません。バックグラウンドからアプリを終了すると、機能します。

UIWebViewiOS 5.1 でページをデバッグする方法はありますか?

4

1 に答える 1

0

昨日iOS7で同じことに遭遇し、数分前に解決策を見つけました。多分それはあなたを助けるでしょう。

方法を確認してくださいviewWillDisappear。私は次のように見えました:

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    self.webView.delegate = nil;
    self.webView = nil;
    // whatever else you do
}

エラーは割り当てにありました。表示されてMFMailComposeViewController呼び出さviewDidDisappearれたときwebViewにデリゲートが失われ、そのためクリックがキャプチャされませんでした。

iOS6 以降用にプログラミングしている場合は、そのままにしておく必要があります。

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    // whatever else you do
}

ただし、iOS5 以前用にプログラミングしていてnil、何らかの理由で割り当てる必要がある場合は、次のように追加します。

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.webView.delegate = nil;
    self.webView = nil;
    // whatever else you do
}

注: このメソッドはiOS6 以降では呼び出されないため、iOS6 以降では非推奨です。

于 2014-09-17T09:15:31.427 に答える