簡體   English   中英

如何在沒有其他自定義代碼的情況下強制使正在運行的Cocoa程序無效?

[英]How can I force invalidation of a running Cocoa program without additional custom code?

我的Cocoa程序中有多個自定義NSView。 我正在尋找一種強制它們無效的方法,而不必在程序運行時添加其他代碼。 如果我是在帶有.NET框架的Windows上執行此操作,則只需將程序的一部分拖到屏幕外,然后再次拖回即可。 當不在屏幕上的區域重新顯示時,它們將失效。 我還沒有弄清楚如何用Cocoa-OSX做到這一點。

setNeedsDisplay方法應執行以下操作:

- (void)setNeedsDisplay:(BOOL)flag
- (void)setNeedsDisplayInRect:(NSRect)invalidRect

文件在這里

Mac OS X上的Windows由Window Server緩沖,因此不能通過在屏幕上移動來強制其重繪。 用戶強制重繪的唯一方法是調整窗口大小。

但是,為什么需要這樣做呢?

我建議您嘗試使用F-script http://www.fscript.org/ 它允許您在程序運行時在Cocoa對象上調用方法。

您可以使用它直接在要使其無效的視圖上調用setNeedsDisplay:(BOOL)flagsetNeedsDisplayInRect:(NSRect)invalidRect方法。

最小化窗口並最小化它。 碰巧迫使重畫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM