2012-04-12 71 views
0

在Cocoa中,是否有可能僅針對其他窗口提供模式爲的窗口作爲窗口而不是)?特別是,我想提出一個警告,防止用戶只與其通知用戶的窗口進行交互(直到用戶已處理 - 關閉 - 警報)。當用戶無法與呼叫中指定的窗口進行交互以顯示警報時,她可以繼續與其他窗口進行交互。我會重申:在這種情況下,將警報作爲表單提交併不是可接受的解決方案。是否可以爲另一個窗口呈現窗口(作爲其自己的窗口,而不是表單)?

回答

1

表格是製作一個窗口模式相對於另一個窗口模式的標準方法 - 特別是警報 - 所以Apple不提供用於以其他方式執行此操作的方便API。問問自己:

  • 爲什麼你認爲一張紙是一個不允許的解決方案?
  • 你想用這個模式窗口做什麼,你不能用一張紙做?
  • 通過使用非常見的用戶界面來爲常見場景提供給用戶什麼價值?

如果你真的想使一個窗口模式到另一個不使用紙張API,實現它僅僅是一個考慮的事情是什麼「窗口模式」是指... ...這似乎你已經做了:

...這阻止用戶僅與窗口交互的警報......

讓您真正需要做的是防止用戶與該窗口的交互。有很多方法可以做到這一點,包括:

  • 禁用窗口
  • 已經在窗口留意你的警告是否是可見的任何事件處理自定義視圖中的所有控件,而忽略在這種情況下,事件
  • 層之上的所有窗口的內容,其防止點擊到達視圖下方
  • 子類NSApplication並重寫sendEvent:忽略在窗口事件的圖(這是真的矯枉過正和潛在有問題的)

除此之外,您可能希望將警報附加到窗口,以便它們一起移動,並且不會在Exposé中執行奇怪的操作:請參閱-[NSWindow addChildWindow:ordered:]

相關問題