我认为这很简单:
我想为WebView添加上下文菜单.
在IB中,我向NIB添加了一个NSMenu,将其连接到WebView的菜单插座,启动并期望能够在WebView中进行控制点击并查看弹出菜单.我在上下文菜单中看到的唯一项目是"重新加载".我可以执行相同的步骤,但将菜单连接到其他视图,它按预期工作.
连接到webview的菜单插座时,为什么菜单不能正常工作?
谢谢
首先我的代码:
- (NSMenu*)sourceList:(PXSourceList*)aSourceList menuForEvent:(NSEvent*)theEvent item:(id)item
{
if ([theEvent type] == NSRightMouseDown || ([theEvent type] == NSLeftMouseDown && ([theEvent modifierFlags] & NSControlKeyMask) == NSControlKeyMask)) {
NSMenu * m = [[NSMenu alloc] init];
if (item != nil) {
NSLog(@"%@",[item title]);
[m addItemWithTitle:[item title] action:@selector(press:) keyEquivalent:@""]; // problem. i want to give "item" as an argument.....
for (NSMenuItem* i in [m itemArray]) {
[i setTarget:self];
}
} else {
[m addItemWithTitle:@"clicked outside" action:nil keyEquivalent:@""];
}
return [m autorelease];
}
return nil;
}
-(void) …
Run Code Online (Sandbox Code Playgroud) 我在状态栏上有一个状态菜单,我在场景后面运行了一些任务.当其中一个任务完成时,假设在显示菜单(下拉)时,我想让菜单自动处于下拉模式(假设在菜单图标上单击鼠标左键).有没有办法做到这一点?
当在菜单上向右或向左单击时,我使用此代码有两种不同的行为.
单击左键,然后单击右+ cmd.
如何在没有按cmd +单击的情况下以最简单的方式单击鼠标右键?
-(void)awakeFromNib {
NSImage *image = [NSImage imageNamed:@"menubar"];
NSImage *alternateImage = [NSImage imageNamed:@"menubar-white"];
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setHighlightMode:YES];
[statusItem setImage:image];
[statusItem setAlternateImage:alternateImage];
[statusItem setAction:@selector(show)];
}
- (void)show {
NSLog(@"call show");
NSEvent *event = [NSApp currentEvent];
//Respond to the mouse click
if ([event modifierFlags] & NSCommandKeyMask) //Command
{
NSLog(@"RIGHT");
[statusItem setMenu:statusMenu];
}
else {
NSLog(@"LEFT");
//open window
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
nsmenu ×4
cocoa ×3
nsmenuitem ×2
macos ×1
nsstatusitem ×1
objective-c ×1
right-click ×1
webview ×1