2012-10-20 67 views
1

我(重新)寫一個小應用程序來控制USB設備。我希望該應用程序的窗口始終完全可見。所以當你在窗口周圍移動時,當底部碰到屏幕的底部或其中一邊碰到屏幕的一側時,它會停止移動。可可:防止窗戶離開屏幕

這是可能的嗎?

回答

2

是的,這是可能的。 正常NSWindows與標題欄限制其自己的框架,不允許窗口的頂部離開屏幕的頂部。這是在-[NSWindow constrainFrameRect:toScreen:] 中完成的,你可以重載這個方法來限制你想要的幀。

+0

看看這種方法,不知道我完全理解,但我會給它一個。當然,準備實施的解決方案總是受歡迎的; ;-)坦克,Arjen – ArjenA

+0

你問這是可能的。答案是肯定的。谷歌的這種方法;我相信你會發現有人用它來達到同樣的目的。 –

+0

的確如此,我正在努力。但是,這並不意味着一個現成的解決方案是不受歡迎的... – ArjenA

0

如果您想防止用戶能夠自由移動窗口,只需製作一個沒有標題欄的自定義窗口即可。有一個標題欄向用戶表明該窗口可以移動,所以這裏的解決方案是沒有一個。然後,沒有控制移動它。您需要提供自己的關閉窗口的控件。

+0

謝謝,但那不是我想要的。我只是希望窗口不能移出屏幕。這是一個應用程序控制我的度假小屋中的東西,在本地Mac上運行。在途中,我通過VNC通過我的iPhone訪問此應用程序。這對於我在移動電話上的慢速響應來說已經很困難了,但是當有人將應用從屏幕上移開時,幾乎不可能找回它。由於我使窗口浮動,所以很容易找到,我還需要能夠移動它以查看其他應用程序的運行情況。 – ArjenA

+0

那麼我在另一個答案中提到的方法就是你需要的。只需創建一個NSWindow子類並實現此方法。確保你的窗口是Interface Builder中的那個子類。 –

+0

據我所知,這就是我所做的。我在IB中命名窗口appWindow,並試圖用我試圖覆蓋frameRectToScreen(包括將原點固定在0,0)的各種東西,但沒有任何做。窗口仍然可以隨意移動到任何地方...... – ArjenA