为了实验目的,我做了这样的事情。诀窍是创建一个带有透明背景或 zeroSize 的自定义无边框窗口。
创建,显示和定位窗口后,可以从中显示弹出窗口。
对于窗口创建:
Objective-C
NSWindow* window = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
window.opaque = NO;
window.backgroundColor = [NSColor clearColor];
window.level = NSStatusWindowLevel;
window.accessibilityHidden = YES;
[window makeKeyAndOrderFront:nil];
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
Run Code Online (Sandbox Code Playgroud)
迅速
window = NSWindow(contentRect: windowRect, styleMask: NSBorderlessWindowMask, backing: .Buffered, defer: true)
window.opaque = false
window.backgroundColor = NSColor.clearColor()
window.level = Int(CGWindowLevelForKey(.StatusWindowLevelKey))
window.setAccessibilityHidden(true)
window.makeKeyAndOrderFront(nil)
NSApplication.sharedApplication().activateIgnoringOtherApps(true)
Run Code Online (Sandbox Code Playgroud)
对于弹出框:
Objective-C
//Create popover .........
[popover showRelativeToRect:popoverRect ofView:window.contentView preferredEdge:NSMaxYEdge];
Run Code Online (Sandbox Code Playgroud)
迅速
//Create popover ......
popover.showRelativeToRect(popoverRect, ofView: window.contentView, preferredEdge: .MaxY)
Run Code Online (Sandbox Code Playgroud)
为了在单击屏幕上的某处时关闭弹出窗口,必须添加全局事件监视器:
目标-C
//Add global monitor to track when the popover should be closed
if (self.monitor == nil) {
self.monitor = [NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask | NSRightMouseDownMask | NSKeyUpMask) handler:^(NSEvent* event) {
[NSEvent removeMonitor:self.monitor];
self.monitor = nil;
[self.popover close];
self.window = nil;
}];
}
Run Code Online (Sandbox Code Playgroud)
迅速
if monitor == nil {
monitor = NSEvent.addGlobalMonitorForEventsMatchingMask([.LeftMouseDownMask, .RightMouseDownMask /* and others like keyDown/Up if you want*/], handler: { (event: NSEvent) in
NSEvent.removeMonitor(monitor!)
monitor = nil
popover.close()
window = nil
})
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
848 次 |
最近记录: |