Cảnh báo về các giải pháp đề nghị:
Mã này gây lãng phí và vô nghĩa overhead:
for (;;) {
if ([NSApp runModalSession:session] != NSRunContinuesResponse)
break;
}
Mã này được sao chép trực tiếp từ trang tài liệu của Apple - nhưng nó có nghĩa là để hiển thị nhà phát triển nơi mã có ý nghĩa có thể được chèn để thực thi nền trong khi phương thức chạy. Tức là, bạn nên có một số mã giữa khoảng ngắt và giá đóng. Nhưng không có mã thực tế được hiển thị trong ví dụ - và chạy nó như thế này đơn giản khiến cho ứng dụng của bạn thăm dò ý kiến phiên lặp lại cho đến khi nó kết thúc. Nó giống như hai tuổi ở ghế sau của chiếc xe trên một chuyến đi đường hỏi, "Chúng ta có chưa? Chúng tôi có chưa? Chúng tôi chưa?"
Nếu bạn chỉ muốn đơn giản phương thức thực hiện, nơi ứng dụng của bạn trình bày một cửa sổ modal và đình chỉ xử lý các cửa sổ/nền chính cho đến tận cùng phương thức, sử dụng này:
[NSApp runModalForWindow: self.window];
... và sau đó thoát phiên modal khi cửa sổ đóng bằng cách thả này vào bộ điều khiển cửa sổ của bạn:
- (void)windowWillClose:(NSNotification *)notification {
[NSApp stopModal];
}
Nguồn
2012-08-18 18:50:04
Về mặt kỹ thuật, nó không được gọi là trang tính nếu nó đang chạy trong một cách thức ứng dụng. – JWWalker
Cảnh báo kiểu ứng dụng với màu nền và màu văn bản tùy chỉnh giống như có thể khá khó chịu. Bạn có thực sự * cần * để làm điều này? Bạn đã đọc [Nguyên tắc Giao diện Con người Mac] (http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/Intro/Intro.html) chưa? –
Nó không phải là khó chịu ở tất cả, thực sự. Cảnh báo không phù hợp với nhu cầu của tôi, vì tôi đang làm việc với một ứng dụng toàn màn hình và tôi đang sử dụng 'NSStatusWindowLevel'. Tôi đã đọc những hướng dẫn đó một thời gian trước, vâng. – Fatso