"Cannot assign value of type 'Void' to type 'PDFAction?'" 为 PDFAnnotation 设置操作时出错

"Cannot assign value of type 'Void' to type 'PDFAction?'" error when setting an action for a PDFAnnotation

在我的 PDF 查看器应用程序中,我成功打开了一个 PDF 并显示了它的所有内容。该应用程序将始终显示的 PDF 非常大,有 130 页。在 PDF 的第二页中,有一个 table 的内容。我想在文本中添加 PDFButton 并滚动到用户选择的 PDF 中的正确页面。

我当前的代码显示了一个按钮,但我希​​望该按钮执行的操作导致错误:

Cannot assign value of type 'Void' to type 'PDFAction?'

这是我试过的代码:

func insertResetButtonInto(_ page: PDFPage, GoTo: PDFPage) {
    let resetButtonBounds = CGRect(x: 90, y: 200, width: 200, height: 15)
    let resetButton = PDFAnnotation(bounds: resetButtonBounds, forType: PDFAnnotationSubtype(rawValue: PDFAnnotationSubtype.widget.rawValue), withProperties: nil)
    resetButton.widgetFieldType = PDFAnnotationWidgetSubtype(rawValue: PDFAnnotationWidgetSubtype.button.rawValue)
    resetButton.widgetControlType = .pushButtonControl
    resetButton.backgroundColor = UIColor.green
    page.addAnnotation(resetButton)

    // Create PDFActionResetForm action to clear form fields.
    resetButton.action = pdfView.go(to: page)
}

如何在 PDF 中创建一个按钮,作为一个序列或滚动功能,将用户带到同一个 PDF 文档中的不同页面?

您正在尝试将函数分配给需要 PDFAction 的变量。将引发错误的行替换为以下内容:

resetButton.action = PDFActionGoTo(destination: PDFDestination(page: page, at: .zero))

这会将带有您之前初始化的页面的 PDFDestination 传递给 PDFActionGoTo(destination:) 初始化程序。

如果要修改目的地的点,将PDFDestination初始化器的at参数更改为另一个CGPoint值:

let point = CGPoint(x: 50, y: 100)
resetButton.action = PDFActionGoTo(destination: PDFDestination(page: page, at: point))