Desarrollé un programa de marca de agua de pantalla que funcionó bien antes de macOS 12.4. Después de actualizar a 12.4, no se puede hacer clic en la ventana emergente «Extensión del sistema bloqueada», pero la otra ventana está bien. el código de muestra como este
NSScreen *screen = [NSScreen screens][0];
CGFloat windowWidth = screen.frame.size.width;
CGFloat windowHeight = screen.frame.size.height;
CGFloat x = screen.frame.origin.x;
CGFloat y = screen.frame.origin.y;
MyView* view = [[MyView alloc]initWithFrame:NSMakeRect(0, 0, windowWidth, windowHeight)];
NSWindow* window = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, windowWidth, windowHeight)
styleMask: NSWindowStyleMaskBorderless | NSWindowStyleMaskNonactivatingPanel
backing:NSBackingStoreBuffered
defer:NO];
[window setOpaque:NO];
[window setBackgroundColor:[NSColor clearColor]];
[window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorFullScreenAuxiliary];
[window setIgnoresMouseEvents:YES];
[window setHasShadow:NO];
[window setLevel:NSScreenSaverWindowLevel];
[window setContentView:views];
[window makeKeyAndOrderFront:nil];
y dibujar en MyView
- (void)drawRect:(NSRect)dirtyRect
{
NSRect screen = [self bounds];
int SW = screen.size.width;
int SH = screen.size.height;
[[NSColor clearColor] set];
NSRectFill(screen);
NSString * strH= @"watermark test.";
NSMutableDictionary *md = [NSMutableDictionary dictionary];
[md setObject:[NSFont fontWithName:@"Times" size:80] forKey:NSFontAttributeName];
[strH drawAtPoint:NSMakePoint(SH*0.5, SH*0.5) withAttributes:md];
[self setNeedsDisplay:YES];
}
Este código funciona bien desde macOS 11.0 hasta macOS 12.3. ¿Alguien podría decirme cómo adaptarme a macOS 12.4 para mi código? He preguntado en los foros de Apple, pero nadie responde. Este es el enlace