如何通过 UIActivityViewController 打印 UIWebView?
How to print a UIWebView via UIActivityViewController?
我有一个包含 UIWebView
的视图控制器和一个带有 action/share 按钮的工具栏。这将初始化并呈现一个 UIActivityViewController
对象。根据我是否为 activityItems
参数提供 Web 视图的 URL
或 URL 的相应 absoluteString
,会提供不同的操作,但 Print 选项从未显示("more" 部分也未提供)。
我知道如何使用 UIPrintInfo
和 UIPrintInteractionController
显式打印 Web 视图内容,但那将是一个单独的工具栏按钮,而我只想将系统的打印选项包含到 activity按钮行。我假设打印 Web 视图不需要任何显式编码。
我能做什么?
您可以像这样为 UIActivityCotnroller 创建自定义 Activity,
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)
}
}
你可以初始化这个activity像这样的东西
let customActivity = CustomActivity()
customActivity.delegate = self
并且您可以在准备 UIActivityController
时添加此自定义 activity
let activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [customActivity], applicationActivities: nil)
你还需要实现回调方法
func performActionCompletion(actvity: CustomActivity)
{
//Perform you task
}
注意:这只是伪代码,可能包含错误或语法问题
我有一个包含 UIWebView
的视图控制器和一个带有 action/share 按钮的工具栏。这将初始化并呈现一个 UIActivityViewController
对象。根据我是否为 activityItems
参数提供 Web 视图的 URL
或 URL 的相应 absoluteString
,会提供不同的操作,但 Print 选项从未显示("more" 部分也未提供)。
我知道如何使用 UIPrintInfo
和 UIPrintInteractionController
显式打印 Web 视图内容,但那将是一个单独的工具栏按钮,而我只想将系统的打印选项包含到 activity按钮行。我假设打印 Web 视图不需要任何显式编码。
我能做什么?
您可以像这样为 UIActivityCotnroller 创建自定义 Activity,
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)
}
}
你可以初始化这个activity像这样的东西
let customActivity = CustomActivity()
customActivity.delegate = self
并且您可以在准备 UIActivityController
时添加此自定义 activitylet activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [customActivity], applicationActivities: nil)
你还需要实现回调方法
func performActionCompletion(actvity: CustomActivity)
{
//Perform you task
}
注意:这只是伪代码,可能包含错误或语法问题