我正在开发电子书应用程序。我想在每个章节中放置电子邮件按钮。书籍是HTML格式,我将该html页面加载到webView中。 现在是用HTML创建电子邮件按钮并将该按钮的操作转换为objective-c的方法吗? 或者有没有办法发送书籍章节的内容?
答案 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进行交流的教程。
答案 1 :(得分:0)
在UIWebView上设置委托并实现webview:shouldStartLoadingWithRequest:navigationOptions方法。在此方法中,您可以查询请求URL架构以实现mailto:scheme的不同行为 - 然后在HTML源中使用mailto:links。例如,您可能想要[[UIApplication sharedApplication] openURL:...]打开内部mail.app(尚未对此进行测试但是90%确定它可以正常工作)。