我正在尝试构建一个应用程序,允许用户将文件从Finder拖动到菜单栏图标进行处理.我的旅程取得了进展,但我似乎无法登顶这座山.我尝试了子类化NSView并实现拖动消息.
@interface CMDroppableView : NSView <NSMenuDelegate>
Run Code Online (Sandbox Code Playgroud)
我不仅要接受拖动操作,还要在用户单击图标时提供NSMenu.我已经设法让NSMenu正常显示,但拖动功能仍然难以捉摸.
我的理解是我需要注册我在这里完成的已接受的拖动类型:
-(void)awakeFromNib{
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
}
Run Code Online (Sandbox Code Playgroud)
拖动邮件:
-(NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender{
NSLog(@"Drag Enter");
return NSDragOperationCopy;
}
-(NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender{
return NSDragOperationCopy;
}
-(void)draggingExited:(id <NSDraggingInfo>)sender{
NSLog(@"Drag Exit");
}
-(BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender{
return YES;
}
-(BOOL)performDragOperation:(id <NSDraggingInfo>)sender{
return YES;
}
Run Code Online (Sandbox Code Playgroud)
以下是设置自定义视图的代码:
statusItemView = [[CMDroppableView alloc] init];
[statusItemView retain];
[statusItemView setMenu: statusMenu];
[statusItem setView: statusItemView];
Run Code Online (Sandbox Code Playgroud)
依然没有.那么我哪里出错了?
谢谢!
我的Xcode 5(OS X 10.8.5上的5.0.2)快速帮助消失了:
而不是弹出窗口的小弹出窗口Opt-所有以前显示的快捷方式都是箭头图像:

自从Xcode 5升级以来就是这样的.任何想法如何解决它..?
FWIW:文档集实际上已正确安装 - "选择"+双击会像往常一样显示正确的文档.即使手动删除文档集并重新下载也无济于事.
悬停的" 快速帮助"窗口仍然消失了..
我一直在寻找如何以编程方式终止我的应用程序.我发现很多人都在使用NSApp terminate:id.
在Xcode terminate:id中交叉.这种方法是否已被弃用?我应该用它来终止我的申请吗?如果没有哪个是正确的方法呢?
更新:
当我说它越过时我的意思的图片:

我有一个包含许多文件夹/组的大型iOS项目.当我退出并重新启动Xcode时,Project Navigator中的所有文件夹都显示为展开,因此我必须手动折叠其中的大多数文件夹.
是否可以保存Project Navigator的状态,以便在Xcode重新启动时,像以前一样折叠/展开相同的文件夹?
所以我想将一个对象从一个源拖动到多个潜在目的地.当对象在每个目的地上时,我希望它"变形"为不同的图像.从NSDragSource的角度来看,有一种直接的方法吗?
有谁知道在java或scala中使用dbpedia聚光灯的地方怎么样?或者任何人都可以解释它是如何完成的?我找不到任何关于此的信息......
我是编程新手,我需要在我的应用程序中嵌入一个网站(这是空白的;我只想立即嵌入网站).我从下午5点开始一直在寻找它(现在是晚上9:30),我仍然没有找到任何相关信息.
我需要什么代码以及我需要写什么文件?我有什么联系在一起的?
我使用Xcode 4.5.1,我正在尝试为Mac OS X做一个Cocoa应用程序(不适用于iOS).
如果我的一些句子不清楚,我很抱歉,但英语不是我的主要语言.
如果您需要更多信息以帮助我,请询问.
我正在编写一个需要接受文件夹丢弃的自定义视图.条件是:只接受目录,因此当用户拖动文件时,不会发生任何事情.
我注册了我的观点:
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
Run Code Online (Sandbox Code Playgroud)
并且已经实现了基本的拖动协议方法.用于测试目的:
- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender
{
NSLog("@Drag Entered");
return NSDragOperationCopy;
}
- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender
{
return NSDragOperationCopy;
}
- (void)draggingExited:(id<NSDraggingInfo>)sender
{
NSLog(@"Dragging Exited");
}
- (BOOL)prepareForDragOperation:(id<NSDraggingInfo>)sender { return YES; }
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender { return YES; }
Run Code Online (Sandbox Code Playgroud)
所以它的工作原理几乎正确:在视图上拖动时光标会出现加号.但是,如果该项目是常规文件,我想避免这种情况.
我可能需要使用NSFileManager(虽然我想知道是否有更简单的方法)一旦我得到拖动的路径,但问题是在哪里.我试图在draggingEntered:返回NSDragOperationNone的方法中包含测试,但没有成功.我正在关注Apple文档的片段:
{
NSPasteboard *pboard = [sender draggingPasteboard];
if ( [[pboard types] containsObject:NSFilenamesPboardType] ) {
NSArray *files = [pboard propertyListForType:NSFilenamesPboardType];
int numberOfFiles = [files count];
// Perform operation using the list of files
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我应该在哪里实现此测试,因此如果拖动文件,光标保持不变?
cocoa drag-and-drop objective-c osx-snow-leopard nsdragginginfo
从Apple的示例代码和阅读文档中我看不出配置NSPathControl行为类似于例如Xcode Editor窗口中的" 跳转条 ":

即它代表一个路径(或其他类型的层次结构),并使路径的每个组件成为一个可点击的弹出窗口来导航层次结构..?
有人通过NSPathControlDelegate听取点击并在临时窗口中显示菜单来运气这样的行为吗?
看起来像一个普通的设计,人们甚至期望一些OSS实现 - 但没有这样的运气,但谷歌搜索它..
在我的项目中,我有一个NSToolBar5 NSToolBarItems。我想删除最后两个NSToolbarSpaceItemIdentifier工具栏项目,其中一个是,然后重新加载工具栏。
这该怎么做?我在这一点上安静了很长时间。如果我想从 中删除项目NSToolBar,我会收到由于NSToolbarSpaceItemIdentifier.
我想再次调用委托方法并将最新的 items 数组传递给它。
这该怎么做?
请帮忙。