我无法弄清楚为什么我的didEndSelector没有被调用。有什么想法吗?
- (void) showMonitorAlertIfNeeded {
if (! self.monitorAlert && [self isHideMonitorAlert]) {
self.monitorAlert = [MMAlertController monitorAlert];
[[self.monitorAlert window] setTitle: [self applicationName]];
[self.monitorAlert beginSheetModalForWindow: [NSApp keyWindow]
modalDelegate: self
didEndSelector: @selector(monitorAlertDidEnd:returnCode:contextInfo:)
contextInfo: nil];
[[self.monitorAlert window] setLevel: NSScreenSaverWindowLevel];
}
}
- (void) monitorAlertDidEnd: (NSAlert *) alert returnCode: (NSInteger) code contextInfo: (id) contextInfo {
switch (code) {
case NSAlertFirstButtonReturn:{
}
NSLog(@"FIRST BUTTON PRESSED");
break;
case NSAlertSecondButtonReturn:{ // don't show again.
NSLog(@"SECOND BUTTON PRESSED");
[[NSApp delegate]setIsHideMonitorAlert:NO];
}
break;
default:
break;
}
}
答案 0 :(得分:3)
如果[MMAlertController monitorAlert]
返回使用NSAlert
创建的alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat:
,则您的切换实际上应包含NSAlertDefaultReturn
和NSAlertAlternateReturn
。 (如果它是以任何其他方式创建的,那么原始switch
值是正确的。)
答案 1 :(得分:1)
尝试在切换之前插入此行:
NSLog(@"code: %ld", code);