如何在显示模态表时禁用Cocoa的默认动画?

我想禁用
Cocoa在显示模态表时执行的动画.

Apple的Sheet Programming Guide声明:

… Other sheet behavior, such as the animation when it appears and is dismissed, is handled automatically by the Application Kit.

但它没有提供有关如何禁用此效果的任何提示.

我创建了一个自定义工作表(NSWindow的子类,具有透明背景和一些控件).我可以使用标准的beginSheet方法显示它,如下所示:

[NSApp beginSheet:myCustomSheet
   modalForWindow:mainWindow
    modalDelegate:self
   didEndSelector:...];

工作表显示正常,但在出现时会显示动画,并在关闭时再次显示.

注意:我正在为触摸屏/自助服务终端类型的应用程序编写完全自定义的用户界面,因此没有适用的常用Apple用户界面指南.

最佳答案 这是一个疯狂的猜测(我太懒了,不能尝试),但可以使用Core Animation处理动画.如果是这样,您可以这样做:

[CATransaction begin];
[CATransaction setValue: [NSNumber numberWithBool: YES]
    forKey: kCATransactionDisableActions ];
[NSApp beginSheet:myCustomSheet
   modalForWindow:mainWindow
    modalDelegate:self
   didEndSelector:...];
[CATransaction commit];
点赞