2013-04-09 47 views
5

我有一個靜態NSTextField覆蓋在我的OS X應用程序中的一個大錯誤信息。我試圖讓它允許用戶點擊它下面的控件。NSTextField點擊?

在IB我已經選中「已啓用」,我已經檢查了「拒不急救員」

我也做它的代碼,因爲這是不工作:

[largeErrorText setEnabled:NO]; 
[largeErrorText setRefusesFirstResponder:YES]; 

仍它正在妨礙與它下面的對象進行交互。任何想法可能是什麼?

+0

的可能重複[如何禁用自定義視圖的用戶交互(http://stackoverflow.com/questions/11740638/how-to-disable-user-interaction-in-a-custom-view ) – 2013-04-09 00:05:00

+0

@GabrielePetronella:這個問題與那個無關 – NSGod 2013-04-09 00:30:13

+0

這是關於禁用交互,不是嗎? – 2013-04-09 00:30:58

回答

0

我假定你所描述像下面的圖像的場景顯示:

enter image description here

內紅色矩形是NSTextField標籤的框架輪廓,你說,即使你禁用文本字段並設置拒絕第一響應者,您的點擊不通過NSButton

此設計方案描述了一種稱爲「重疊同級視圖」的情況。如果可能的話,我通常會盡量避免這種情況。如果您不能,您可以通過確保NSTextField標籤位於您希望能夠與之交互的所有其他UI對象「後面」來獲得所需的行爲。您可以通過選擇標籤並選擇編輯器>排列>發送到後面來完成此操作。這將確保該按鈕位於文本字段的前面,以便它可以正確攔截鼠標事件。

+0

很棒的評論,但沒有回答這個問題。謝謝。 – 2015-12-03 15:12:28

19

我發現使對象對點擊透明的唯一方法是對該對象進行子類化(在您的情況下爲NSTextField)並覆蓋返回nil的hitTest方法。這樣NSTextField將不會響應點擊,所以下面的NSView會響應點擊。

- (NSView*)hitTest:(NSPoint)aPoint 
{ 
    return nil; 
}