2014-05-18 22 views
0

互動我在我的「菜單欄」中有一個NSView。我有一個按鈕,我點擊並在菜單中添加一個新的NSMenuItem。但是,當我運行這個代碼在init方法中的我的自定義視圖中時,視圖會變灰,我無法選擇它。任何想法這可能是這個原因。出現此問題後,問題似乎會影響所有創建的NSMenuItemsNSTextView有時會變灰,無法與

-(id)initWithFrame:(NSRect)frameRect andTag:(int)tagz{ 
    textfeild = [[NSTextView alloc]initWithFrame:CGRectMake(19,1 , 110, 18)]; 
    [textfeild setFont:[NSFont fontWithName:@"Helvetica" size:15]]; 
    [textfeild setString:[NSString stringWithFormat:@"Notespace %d",tagz]]; 
    [textfeild selectAll:self]; 
    [self addSubview:textfeild]; 

} 
+1

檢查您的警告。你錯過了一個'[super initWithFrame:frame]'和'return self'。 – zneak

+0

這不是完整的代碼。 – Freddy

回答

0

我不認爲你應該在菜單項上使用[self addSubview:]。相反,您應該創建一個NSView並將您的自定義視圖放入其中。文檔在這裏:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MenuList/Articles/ViewsInMenuItems.html

但是,根據菜單項內的文檔視圖可能不會收到鍵盤事件。它有時可能有效,但由於文檔特別提到它,所以不應該在菜單中放置任何需要鍵盤事件的視圖。

你應該做的是改爲完全避免NSMenu,並簡單地創建一個NSWindow,其中通常會出現菜單。你可以讓你的窗戶看起來像一個菜單。