在我的应用程序中打开mailto链接而不是邮件应用程序

时间:2014-09-02 20:45:20

标签: objective-c uiwebview mfmailcomposeviewcontroller mailto

我已经遍布这里和网络,我已经实施的任何工作都没有。我正在使用UIWebview构建iPhone应用程序,因为它最适合这个项目。

我的目标是,当我点击mailto链接时,它将调出MFMailComposeViewController而不是打开Mail应用程序。因为我已经尝试了所有可以找到的解决方案,我有两个想法。

  1. 在iOS7中这是不可能的?我无法想象这种情况,但我注意到我发现的大部分想法和教程主要来自几年前。

  2. 我是否可以设置我的UIWebview并委托错误?如果是这种情况,我会给屏幕截图添加一个链接。

  3. 感谢任何帮助。我会分享我尝试过的所有链接,但是我的评级还不够高,还没有链接到链接上。

    感谢您的帮助。

    Screenshot

    修改

    我仍在努力解决这个问题。我以为我离我更近了,但仍然无法让它发挥作用。目标仍然是从UIWebview中调用MFMailComposeViewController。让我来说明一些细节。 我正在使用mailto表单。

    1. 我正在使用一个由锚标记包围的图像作为我的提交按钮,并使用一些javascript来提交。

    2. 表单提交,邮件应用程序正常。

    3. 我想也许我的问题是这不是一个真正的mailto链接,所以我尝试了这个。 我的HTML

      <a href="inapp://javascript:void(0)" class="intruder"><img src="button.png" /></a>
      
    4. 我的ViewController.m代码

       - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
      if ([request.URL.scheme isEqualToString:@"inapp"]) {
          if ([request.URL.host isEqualToString:@"javascript:void(0)"]) {
      
      
      
              if ([MFMailComposeViewController canSendMail]) {
      
                  MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
      
      
                  mailer.mailComposeDelegate = self;
      
                  [mailer setToRecipients:[NSArray arrayWithObject:request.URL.resourceSpecifier]];
      
      
                  NSString *body = @"";
      
      
                  [mailer setMessageBody:body isHTML:NO];
      
      
                  [self presentModalViewController:mailer animated:YES];
      
              }
      
      
              return NO;
          }
          return YES;
      }
      

      }

      但邮件应用程序中的所有内容仍在打开。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我明白了。我没有正确设置webview委托。我以为我的头文件中有。然后我在我的viewdidload方法中将委托设置为self,一切正常。

之前我曾尝试过,我猜我输错了,因为我的文件无法加载。无论如何,现在一切都工作了。