当前位置 : 主页 > 手机开发 > ios >

IOS 9本机打印预览无法呈现

来源:互联网 收集:自由互联 发布时间:2021-06-11
我使用 IOS 9 SDK构建了一个应用程序. 我使用UIPrintInteractionController和UIPrintPageRenderer的子类进行打印. 当iPad或iPhone上显示打印对话框时,UIPrintPageRenderer的drawPageAtIndex:inRect方法未被调用,对
我使用 IOS 9 SDK构建了一个应用程序.

我使用UIPrintInteractionController和UIPrintPageRenderer的子类进行打印.

当iPad或iPhone上显示打印对话框时,UIPrintPageRenderer的drawPageAtIndex:inRect方法未被调用,对话框上的预览区域只是一个带有按钮的灰色框,表示第1页.

这是一个最初是在IOS 6时代编写的应用程序,我正在尝试为IOS 9更新它,所以也许我需要改进一些东西.

有谁知道这里发生了什么?

谢谢!

我不明白究竟发生了什么,但我遇到了同样的问题并修复了它

1)确保我的覆盖中的逻辑正在UI线程上执行

2)将我的AddPrintFormatter调用移动到构造函数方法,而不是从NumberOfPages覆盖调用(这允许我删除此覆盖属性).

现在,当重写UIPrintPageRenderer时,似乎有一些奇怪的线程行为(至少在Xamarin的实现中).

例如,添加此简单覆盖会导致我出现UIKit一致性错误:

public override nint NumberOfPages
{
    get 
    {
        return base.NumberOfPages;
    }
}

因此,当没有覆盖时,基本方法似乎开始在UI线程上执行,但子类的覆盖开始在工作线程上执行.

iOS9 SDK发行说明文档说:

“必须使用iOS 9 SDK构建UCIrintPageRenderer或UIPrintFormatter子类以绘制内容以进行打印的应用程序才能显示预览.UIPrintPageRenderer的行为已更新为调用drawPageAtIndex:inRect:多次可能具有不同的页面大小和边距. UIPrintPageRenderer上的方法可以从非主线程调用,但不能同时从多个线程调用.“

网友评论