Bạn có thể sử dụng đoạn mã sau đây để ẩn ngói Dock của một quá trình đó không phải là hoạt động:
- (void)applicationWillResignActive:(NSNotification *)notification
{
ProcessSerialNumber psn = {0, kCurrentProcess};
TransformProcessType(&psn, kProcessTransformToBackgroundApplication);
if([self.window isVisible])
{
[self.window performSelector:@selector(orderFrontRegardless) withObject:nil afterDelay:0.05];
}
}
- (void)applicationWillBecomeActive:(NSNotification *)notification
{
ProcessSerialNumber psn = {0, kCurrentProcess};
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
SetFrontProcessWithOptions(&psn, kSetFrontProcessCausedByUser);
}
Chỉ cần thêm đoạn code trên để đại biểu ứng dụng của bạn và biểu tượng Dock của ứng dụng sẽ biến mất khi quá trình từ chức hoạt động.
Để giữ cửa sổ hiển thị sau khi quá trình được chuyển thành ứng dụng UIElement, hãy gửi thông báo orderFrontRegardless
. (Rất hacky, tôi biết - nhưng đó phải là giá để xử lý cửa sổ/quy trình không chuẩn)
Có lẽ bạn cũng nên duy trì menu Dock cho phép người dùng chọn cửa sổ ẩn.
Bạn có thể tự động thêm mục nhập từ ứng dụng "chính" của mình. Chi tiết có thể được tìm thấy trong phần "Dynamically Adding Menu Items With the Application Delegate" của Hướng dẫn lập trình Tile Dock.
Cập nhật:
Tôi hơi thay đổi mẫu mã trên như cách tiếp cận trước đó dẫn đến một menu chính không đáp ứng sau khi tái kích hoạt các ứng dụng.
Nguồn
2013-06-24 08:54:05
Điều này cũng không xảy ra với sự cố khi thanh menu của cửa sổ của tôi biến mất khi quá trình chuyển sang chế độ UIElementApplication không? –
Không, bởi vì quá trình tự động được chuyển đổi thành quy trình tiền cảnh ngay sau khi ứng dụng hoạt động trở lại (ví dụ: bằng cách nhấp vào cửa sổ). Bạn sẽ phải tìm một giải pháp cho các cửa sổ đóng/ẩn mặc dù. Bạn có thể dễ dàng kiểm tra hành vi của mã trên bằng cách đặt nó vào ứng dụng đại biểu của một dự án Xcode trống. –
Tôi đã xây dựng mã ở trên bằng một dự án Xcode trống ... biểu tượng dock biến mất khi tôi nhấp vào bên ngoài cửa sổ, nhưng khi tôi đặt lại cửa sổ, thanh trình đơn không hoạt động: tôi có thể thấy, nhưng nhấp vào nó không có hiệu lực (tức là các menu không thả xuống). :( –