0

我不知道为什么我的 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;
    }
}
4

2 回答 2

3

如果[MMAlertController monitorAlert]返回一个NSAlert创建的,alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextW‌​ithFormat:那么你的开关实际上应该包含NSAlertDefaultReturnand NSAlertAlternateReturn。(如果它是以任何其他方式创建的,那么您的原始switch值是正确的。)

于 2012-06-28T03:33:40.320 回答
1

尝试在开关之前插入这一行:

NSLog(@"code: %ld", code);
于 2012-06-28T00:12:38.207 回答