iphone:可以在HTML for eBook App中创建电子邮件按钮吗?

时间:2011-12-28 11:56:46

标签: iphone objective-c xcode webview

我正在开发电子书应用程序。我想在每个章节中放置电子邮件按钮。书籍是HTML格式,我将该html页面加载到webView中。 现在是用HTML创建电子邮件按钮并将该按钮的操作转换为objective-c的方法吗? 或者有没有办法发送书籍章节的内容?

2 个答案:

答案 0 :(得分:1)

你可以使用javascript。

function drawButton(code){
    var body = document.getElementsByTagName("body")[0];
    var frame=document.createElement("div");
    var link=document.createElement("a");
    var image=document.createElement("img");

    image.src="btn-email.png";
    link.appendChild(image);
    link.href=sendmail(code);
    frame.appendChild(link);
    body.appendChild(frame);

}

这将在您的html文档中绘制电子邮件按钮,您可以使用stringByEvaluatingJavascriptFromString UIWebView方法从Obj C中调用它。在这个例子中,我传递变量“code”,它是核心数据库中元素的主键。 href通过函数sendmail(...)创建,它看起来像这样(在我的代码中)并再次使用“代码”来创建一个唯一的链接。

function sendmail(code){
    var scheme="mail:"+code;
    return scheme;
}

这将创建一个自定义方案,当用户点击它时,该方案将被发送到应用程序中的UIWebView。使用委托方法webViewShouldLoadRequest:您可以捕获该方案并使用其中的信息。

代码可以是数据库中书籍的唯一ID,也可以是s.th.当用户按下邮件按钮时,mail:code_of_book会被发送,您可以使用该代码而不是打开附有正确书籍的邮件应用程序。实际上非常简单,非常方便。

查看我的博客了解更多相关信息,我在一周前写了2篇关于在网页视图中使用javascript以及如何与Obj C进行交流的教程。

http://howtomakeitinamsterdam.wordpress.com/

答案 1 :(得分:0)

在UIWebView上设置委托并实现webview:shouldStartLoadingWithRequest:navigationOptions方法。在此方法中,您可以查询请求URL架构以实现mailto:scheme的不同行为 - 然后在HTML源中使用mailto:links。例如,您可能想要[[UIApplication sharedApplication] openURL:...]打开内部mail.app(尚未对此进行测试但是90%确定它可以正常工作)。