在我的应用程序开始打印之前我必须做一些处理,所以我在一个线程上做,一旦完成,我做
dispatch_async(dispatch_get_main_queue(),^(){
ULIPrintableView *viewForPrinting = [[ULIPrintableView alloc] initWithData:data];
NSPrintOperation *operation = [NSPrintOperation printOperationWithView:viewForPrinting];
NSPrintPanel *panel = operation.printPanel;
ULIPrintAccessoryViewController *settingsVC = [ULIPrintAccessoryViewController new];
viewForPrinting.printOperation = operation;
settingsVC.printView = viewForPrinting;
[panel addAccessoryController:settingsVC];
[operation runOperation];
});
一切正常,除了附件视图中的 NSScrollView(包装 NSTableView)。
使用连接到 Mac 的常规有线 PC 鼠标时,该视图可以完美滚动,但使用 Apple 触控板(MacBook 或外部触控板)和两指滚动时,除非您将手指从触控板上移开,否则滚动视图不会更新。
似乎某种触摸移动事件没有被传递。
如果我将块中的最后一行从-runOperation
更改-runOperationModalForWindow:delegate:didRunSelector:contextInfo:
为再次滚动就可以了,但是我真的没有窗口,我可以在我的用例中显示此工作表。
如果我直接调用任一 runOperation 方法而不是进行线程化,则滚动视图滚动良好。