>如果我将文件从Stacks拖到我的窗口,它可以很好地工作.
>如果我将文件从Finder拖到我的窗口,它可以很好地工作.
>如果我将文件从Finder拖到我的状态项,它可以完美地工作.
>如果我将文件从Stack拖到我的状态项,它就不起作用.
窗口和状态项都使用完全相同的拖放处理代码.
有趣的是,当文件从Stacks拖到状态项上时,游标会按预期更改,因为 – (NSDragOperation)draggingEntered:(ID)sender {
NSPasteboard * pboard;
NSDragOperation sourceDragMask;方法按预期调用.
但是,当文件被删除时,– (BOol)performDragOperation:(ID)sender {
NSPasteboard * pboard;
NSDragOperation sourceDragMask;方法不被调用.
这是第一种方法的实现:
- (NSDragOperation)draggingEntered:(ID <NSDraggingInfo>)sender { NSPasteboard *pboard; NSDragOperation sourceDragMask; sourceDragMask = [sender draggingSourceOperationMask]; pboard = [sender draggingPasteboard]; if ( [[pboard types] containsObject:NScolorPboardType] ) { if (sourceDragMask & NSDragOperationGeneric) { return NSDragOperationGeneric; } } if ( [[pboard types] containsObject:NSfilenamesPboardType] ) { if (sourceDragMask & NSDragOperationlink) { return NSDragOperationlink; } else if (sourceDragMask & NSDragOperationcopy) { return NSDragOperationcopy; } } return NSDragOperationNone;}
谢谢!
解决方法 这是一个合法的问题.我已经向Apple提交了一份错误报告. http://openradar.appspot.com/radar?id=1745403与此同时,我找到了一个解决方法.即使从不调用performDragOperation:,draggingEnded:仍然是.您仍然可以通过检查“draggingLocation”点是否在NSVIEw的rect内部来判断文件是否已放在NsstatusItem上.这是一个例子:
- (voID)draggingEnded:(ID<NSDraggingInfo>)sender{ if(NSPointInRect([sender draggingLocation],self.frame)){ //The file was actually dropped on the vIEw so call the performDrag manually [self performDragOperation:sender]; }}
希望这有助于修复错误.
总结以上是内存溢出为你收集整理的可可 – 奇怪的行为:从Stacks拖到状态项不起作用全部内容,希望文章能够帮你解决可可 – 奇怪的行为:从Stacks拖到状态项不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)