我试图子类化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没有.
解决方法 没有必要处理事件,所有你需要做的分配一个上下文菜单是设置表视图的菜单插槽来指向要用于上下文菜单的NSMenu对象.您可以在Interface Builder中通过将NSMenu对象放入nib文件中进行控制,并将其从表视图拖动到菜单以设置插座.
或者,您可以使用NStableVIEw(继承自NSResponder)的-setMenu:方法以编程方式分配菜单.
总结以上是内存溢出为你收集整理的Cocoa:当您右键单击NSTableView的单元格时,如何使用上下文菜单全部内容,希望文章能够帮你解决Cocoa:当您右键单击NSTableView的单元格时,如何使用上下文菜单所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)