2011-05-31 63 views
9

我有一個帶有自定義單元的TableView。當用戶在其中一個單元格上單擊鼠標右鍵(或任何其他的右鍵單擊的Apple變體)(並知道它們單擊了哪個單元格時)時,會顯示上下文菜單。可可:如何在右鍵單擊NSTableView的單元格時獲得上下文菜單

我試圖子類NSTableView的,並覆蓋此方法:

- (NSMenu *)menuForEvent:(NSEvent *)theEvent; 

但它永遠不會被調用。

在另一方面,

- (void)rightMouseDown:(NSEvent *)theEvent; 

被調用。但我不確定這是我們想要的。

更多細節:

// 
// PTTableView.m 
// 
// 
// Created by Nathan Hazout on 5/31/11. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import "PTTableView.h" 


@implementation PTTableView 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     // Initialization code here. 
    } 

    return self; 
} 

- (void)rightMouseDown:(NSEvent *)theEvent { 
    NSLog(@"entered rightMouseDown"); 
} 

- (NSMenu *)menuForEvent:(NSEvent *)theEvent { 
    NSLog(@"entered menuForEvent"); 
    return [super menuForEvent:theEvent]; 
} 

- (NSView *)hitTest:(NSPoint)aPoint{ 
    NSLog(@"entered hitTest"); 
    return [super hitTest:aPoint]; 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
} 

@end 

rightMouseDown被調用。 hiTest被多次調用。但是menuForEvent不。

回答

49

有沒有必要彌補事件處理,所有你必須做的分配上下文菜單是設置表視圖的menu插座指向NSMenu對象,你想用於上下文菜單。

您可以在界面構建器中通過將NSMenu對象放入您的筆尖文件並將控件從表格視圖拖動到菜單來設置插口來實現。

或者,您可以使用-setMenu:方法NSTableView(繼承自NSResponder)以編程方式分配菜單。

+0

我應該在TableView還是Cell上做? – 2011-05-31 12:20:17

+0

將上下文菜單分配給視圖。 – 2011-05-31 14:08:30

+0

Hi Rob,請你指出我應該怎麼做才能左鍵單擊(而不是右鍵)打開相同的上下文菜單。 – 2013-01-31 11:38:22

相關問題