首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSPrintOperation附件视图中的NSScrollView无法正常滚动

NSPrintOperation附件视图中的NSScrollView无法正常滚动
EN

Stack Overflow用户
提问于 2018-03-06 00:17:32
回答 1查看 142关注 0票数 1

在我的应用程序可以开始打印之前,我必须做一些处理,所以我在线程上执行,一旦完成,我就执行

代码语言:javascript
复制
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)之外,所有的工作都很正常。

与苹果电脑连接的普通有线PC鼠标可以完美地滚动该视图,但如果使用苹果触控板(包括MacBook和外置鼠标),并使用双指滚动,滚动视图就不会更新,除非你将手指从触控板上移开。

看起来好像某种触动的事件并没有被传递。

如果我将块中的最后一行从-runOperation更改为-runOperationModalForWindow:delegate:didRunSelector:contextInfo:,滚动也可以,但我实际上没有一个窗口,我可以在我的用例中显示这个工作表。

如果我直接调用这两个runOperation方法中的任何一个,而不是执行线程操作,滚动视图就会正常滚动。

EN

回答 1

Stack Overflow用户

发布于 2018-03-06 00:17:32

所以我有一个变通办法和一个怀疑:

因此,当我运行时,我阻塞了主分派队列,这些事件堆积在我的模式运行循环“后面”。

不过,对这个变通方法并不是很满意。如何保证-performSelectorOnMainThread:withObject:有朝一日不会阻塞主队列?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49114863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档