Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
565 views
in Technique[技术] by (71.8m points)

objective c - Creating a fully customized NSAlert

Is it possible to create a fully customized alert? I'm doing it with custom sheets now, but I'd like to have the feature that the sheet is blocking (like -[NSAlert runModal]).

I just want to change the background, really, and the text color, of course.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Warning about the recommended solution:

This code causes wasteful and pointless overhead:

for (;;) {
    if ([NSApp runModalSession:session] != NSRunContinuesResponse)
        break;
}

This code is copied straight from the Apple documentation page - but it's meant to show the developer where meaningful code can be inserted for background execution while the modal runs. That is, you should have some code between the break and the closing bracket. But there's no actual code shown in the example - and running it like this simply causes your application to poll the session repeatedly until it ends. It's like the two-year-old in the back seat of the car on a road trip asking, "Are we there yet? Are we there yet? Are we there yet?..."

If you just want straightforward modal execution, where your application presents a modal window and suspends processing of main / background windows until the modal ends, use this:

[NSApp runModalForWindow: self.window];

...and then exit the modal session when the window closes by dropping this into your window controller subclass:

- (void)windowWillClose:(NSNotification *)notification {
    [NSApp stopModal];
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...