邮件编辑器没有显示在我的UIWebView下

时间:2013-01-27 12:24:04

标签: uiwebview mfmailcomposeviewcontroller

我有一个MainController和详细控制器。当我弹出Book选择并选择Book时,detailcontroller会显示带有书籍文章的UIWebView:

@interface IpadBooksViewController : UITableViewController {
    SearchResult                *searchResult;
    IpadArticleViewController   *detailController;
    IpadMainViewController      *mainController;
    UIPopoverController         *popover;
}

在UIWebView中,我显示一个电子邮件图标并捕获方案:

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

    NSURL *url          = [request URL];
    NSString *scheme    = [url scheme];
    NSString *host      = [url host];

    if ([[url description] hasSuffix:@"next"]) {
        NSLog(@"next Show");
    }

    BOOL isShareLinks       = [host isEqualToString:@"displayShareLinks"];
    BOOL isFavoriteLinks    = [host isEqualToString:@"displayFavoriteLinks"];

    if ([@"myappurl" isEqualToString:scheme] && (isShareLinks || isFavoriteLinks)) {        

        self.selectedArticleNumber  = [url.path lastPathComponent];

        if (isShareLinks) {                     
            [self sendMailArticleNumber:selectedArticleNumber];

        } else if (isFavoriteLinks) {
            NSLog(@"ipad favorite clicked");
            [self toggleFavorite:selectedArticleNumber];

            Broker *broker = [[Broker alloc] init];
            [broker loadProjects:self];
            [broker release];            
        }
    }

    return [super webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];

}

动作应该在我的UIWebView下显示MFMailController,但没有显示任何内容而没有错误消息:

- (void) sendMailArticleNumber:(NSString *)articleNumber {
    MFMailComposeViewController* composer = [[MFMailComposeViewController alloc] init];
    composer.mailComposeDelegate = self;
    [composer setSubject:@"Article"];

    NSString *messageBody = [Article fetchBody:articleNumber bookId:bookId];

    [composer setMessageBody:messageBody isHTML:YES];   
    [self presentModalViewController:composer animated:YES];

    [composer release];     
}

欢迎任何帮助。我确实尝试创建一个popover,addView atIndex但没有成功......如果你需要更多代码,请告诉我。

大卫

1 个答案:

答案 0 :(得分:0)

我确实通过将控制器加载到委托中来解决问题,如下所示:

    [((PublilexAppDelegate*)[[UIApplication sharedApplication] delegate]) sendMailArticleNumber:selectedArticleNumber bookId:self.bookId];

然后进入代表:

- (void) sendMailArticleNumber:(NSString *)articleNumber bookId:(NSString*)bookId {
    MFMailComposeViewController* composer = [[MFMailComposeViewController alloc] init];
    composer.mailComposeDelegate = self;
    [composer setSubject:@"Article"];

    NSString *messageBody = [Article fetchBody:articleNumber bookId:bookId];

    [composer setMessageBody:messageBody isHTML:YES];
    [self->navigationController presentModalViewController:composer animated:YES];

    [composer release];
}

并解雇并回到之前的观点:

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {

    [self->navigationController dismissModalViewControllerAnimated:YES];

    //    [self dismissViewControllerAnimated:YES completion:nil];

    //    [((PublilexAppDelegate*)[[UIApplication sharedApplication] delegate]) navigateToIpadMain];

}