如何通过 UIActivityViewController 打印 UIWebView?
Posted
技术标签:
【中文标题】如何通过 UIActivityViewController 打印 UIWebView?【英文标题】:How to print a UIWebView via UIActivityViewController? 【发布时间】:2017-12-05 18:27:49 【问题描述】:我有一个包含UIWebView
的视图控制器和一个带有操作/共享按钮的工具栏。这将初始化并呈现一个UIActivityViewController
对象。根据我是否为activityItems
参数提供了Web 视图的URL
或URL 的相应absoluteString
,提供了不同的操作,但从未显示打印 选项(在“更多”部分)。
我确实知道如何使用UIPrintInfo
和UIPrintInteractionController
显式打印Web 视图内容,但这将是一个单独的工具栏按钮,而我只想将系统的打印选项包含在活动按钮行中。我假设打印 Web 视图不需要任何显式编码。
我能做什么?
【问题讨论】:
【参考方案1】:您可以像这样为 UIActivityCotnroller 创建自定义活动,
import UIKit
protocol CustomActivityDelegate : NSObjectProtocol
func performActionCompletion(actvity: CustomActivity)
class CustomActivity: UIActivity
var delegate: CustomActivityDelegate?
override class var activityCategory: UIActivityCategory
return .action
override var activityType: UIActivityType?
guard let bundleId = Bundle.main.bundleIdentifier else return nil
return UIActivityType(rawValue: bundleId + "\(self.classForCoder)")
override var activityTitle: String?
return "You title"
override var activityImage: UIImage?
return <Your activity image >
override func canPerform(withActivityItems activityItems: [Any]) -> Bool
return true
override func prepare(withActivityItems activityItems: [Any])
//
override func perform()
self.delegate?.performActionCompletion(actvity: self)
activityDidFinish(true)
你可以像这样初始化这个活动
let customActivity = CustomActivity()
customActivity.delegate = self
您可以在准备 UIActivityController 时添加此自定义活动
let activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [customActivity], applicationActivities: nil)
你还需要实现回调方法
func performActionCompletion(actvity: CustomActivity)
//Perform you task
注意:这只是伪代码,可能包含错误或语法问题
【讨论】:
谢谢你的线索。这非常复杂,我认为在 ios 中打印 URL /UIWebView
的内容会更直接。不过,我想我会以这种方式实现它。
@stefan 如果您的问题得到解决,请接受我的回答
如果没有其他想法以更短的方式执行此操作,我会很乐意这样做——我希望有一个无需显式编码的解决方案。再次感谢您的帮助!以上是关于如何通过 UIActivityViewController 打印 UIWebView?的主要内容,如果未能解决你的问题,请参考以下文章
我在作为 UIDocumentInteractionController 和 UIActivityViewController 的一部分的 UIActivityGroupViewController