Cocoa 如何控制模式对话框的选项卡顺序(键视图循环)?runModalForWindow:忽略nextKeyView
除非我完全困惑,否则Cocoa 如何控制模式对话框的选项卡顺序(键视图循环)?runModalForWindow:忽略nextKeyView,cocoa,tabs,modal-dialog,Cocoa,Tabs,Modal Dialog,除非我完全困惑,否则runModalForWindow:似乎会忽略NSPanel中字段的nextKeyView属性 #define RUN_MODAL 1 #if RUN_MODAL [ NSApp runModalForWindow: self.view.window ] ; #else [ self.view.window makeKeyAndOrderFront: nil ] ; #endif 我已经尝试了两种方法,当使用正常的MakeKeyandDerfront:时,我
runModalForWindow:
似乎会忽略NSPanel中字段的nextKeyView
属性
#define RUN_MODAL 1
#if RUN_MODAL
[ NSApp runModalForWindow: self.view.window ] ;
#else
[ self.view.window makeKeyAndOrderFront: nil ] ;
#endif
我已经尝试了两种方法,当使用正常的MakeKeyandDerfront:
时,我肯定得到了正确的选项卡顺序,而当使用runModalForWindow:
时,我没有得到正确的选项卡顺序
我错过什么了吗?或者有人知道如何在运行modal时使其工作吗
根据建议,我尝试了以下方法,得到了相同的结果:
#define RUN_MODAL 1
#if RUN_MODAL
#define USE_BEGINSHEET 1
#if USE_BEGINSHEET
[ NSApp beginSheet: self.view.window
modalForWindow: nil
modalDelegate: nil
didEndSelector: NULL
contextInfo: NULL ];
#else
[ NSApp runModalForWindow: self.view.window ] ;
#endif
#else
[ self.view.window makeKeyAndOrderFront: nil ] ;
#endif
请注意,“文档窗口”是
nil
,因为这是一个几乎没有后台的UI应用程序,有时会弹出一个登录对话框。原来是界面生成器中属性检查器窗口部分的“自动重新计算视图循环”复选框。它默认为选中,但在模式对话框中,如果任何字段被动态启用/禁用(比如绑定),则重新计算将按“几何”(从左到右,从上到下)顺序进行。
我相信,在编程上,这与NSWindow(在我的例子中是NSPanel)的
autorecalculatesKeyViewLoop
属性相对应。如果使用-beginSheet:modalForWindow:modalDelegate:DiEndSelector:contextInfo:,那么问题是否仍然存在?我可以想象,在每种情况下,第一个响应者可能不同获取用nextTabView指定选项卡顺序对话框中的每个交互项都有nextTabView链接。在模式和非模式下运行的同一项目恰好是第一个响应者。但是模态版本中的tabling忽略了nextTabView链接,只是在从上到下的范围内从左到右,这就是我认为苹果公司所谓的“几何”顺序。还有一个camelCase咕哝道:“autorecalculates”在什么世界里是一个词?在同一个世界里Keyviewloop是一个词,这就是为什么autorecalculatesKeyViewLoop是一个奇怪的混合体。