Ios 如何通过UIActivityViewController打印UIWebView?

Ios 如何通过UIActivityViewController打印UIWebView?,ios,swift,uiwebview,uiactivityviewcontroller,airprint,Ios,Swift,Uiwebview,Uiactivityviewcontroller,Airprint,我有一个包含UIWebView的视图控制器和一个带有操作/共享按钮的工具栏。这将初始化并显示UIActivityViewController对象。根据我是否为activityItems参数提供web视图的URL或URL对应的absoluteString,会提供不同的操作,但“更多”部分中不会显示或提供打印选项 我确实知道如何使用UIPrintInfo和UIPrintInteractionController显式打印web视图内容,但这将是一个单独的工具栏按钮,而我只想将系统的打印选项包含在“活动

我有一个包含UIWebView的视图控制器和一个带有操作/共享按钮的工具栏。这将初始化并显示UIActivityViewController对象。根据我是否为activityItems参数提供web视图的URL或URL对应的absoluteString,会提供不同的操作,但“更多”部分中不会显示或提供打印选项

我确实知道如何使用UIPrintInfo和UIPrintInteractionController显式打印web视图内容,但这将是一个单独的工具栏按钮,而我只想将系统的打印选项包含在“活动”按钮行中。我假设打印web视图不需要任何显式编码


我能做什么?

您可以像这样为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)
    }
}
您可以在准备UIActivityController时添加此自定义活动

let activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [customActivity], applicationActivities: nil)
您还需要实现回调方法

func performActionCompletion(actvity: CustomActivity)
{
   //Perform you task
}

注意:这只是伪代码,可能包含错误或语法问题

谢谢您的提示。这非常复杂,我原以为在iOS中打印URL/UIWebView的内容会更简单。不过,我想我会这样做的。@stefan如果你的问题解决了,请接受我的回答。如果没有其他更简短的方法,我会很乐意这样做的——我希望没有明确的编码。再次感谢你的帮助!
func performActionCompletion(actvity: CustomActivity)
{
   //Perform you task
}