首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可可应用程序的拖放不适用于NSView的子类

可可应用程序的拖放不适用于NSView的子类
EN

Stack Overflow用户
提问于 2014-12-16 01:34:00
回答 2查看 115关注 0票数 0

我试图遵循这个教程(https://www.youtube.com/watch?v=UZ0mp3-JuzY&index=25&list=PLE83F832121568D36)在Cocoa应用程序中拖放。

我使用的是XCode6,因此不推荐视频中使用的一些方法。

我将NSView的子类命名为DropView,并将DropView标识符设置为DropView。

下面是我现在的代码:

代码语言:javascript
复制
#import "DropView.h"
@implementation DropView

-(id)initWithFrame:(NSRect)frameRect
{
    self = [super initWithFrame:frameRect];
    if(self) {
        [self registerForDraggedTypes:[NSArray arrayWithObject:NSURLPboardType]];
    }
    return self;
}


-(NSDragOperation) draggingEntered:(id<NSDraggingInfo>)sender
{
    if ([NSImage canInitWithPasteboard:[sender draggingPasteboard]] && [sender draggingSourceOperationMask] & NSDragOperationCopy)
    {
        NSLog(@"ENTERED");
        return NSDragOperationCopy;
    }
    NSLog(@"NEVER ENTERED IN DRAGGING ENTERED METHOD");
    return NSDragOperationNone;
}


-(NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender
{
    NSLog(@"DRAGGING");
    return NSDragOperationCopy;
}


-(void)draggingEnded:(id<NSDraggingInfo>)sender
{
    NSLog(@"ENDED!");
}


-(void)draggingExited:(id<NSDraggingInfo>)sender
{
    NSLog(@"EXITED!");
}


-(BOOL)prepareForDragOperation:(id<NSDraggingInfo>)sender
{
    NSLog(@"DID I EVER ENTER PREPARE FOR DRAG OPERATION METHOD?");
    return YES;
}


-(BOOL)performDragOperation:(id<NSDraggingInfo>)sender
{
    if([NSImage canInitWithPasteboard:[sender draggingPasteboard]])
    {
        NSImage *newImage = [[NSImage alloc ]initWithPasteboard:[sender draggingPasteboard]];
        [self setImage:newImage];
    }
    return YES;
}


-(void)concludeDragOperation:(id<NSDraggingInfo>)sender
{
    [self setNeedsDisplay:YES];
}

@end

我没有收到任何错误,但似乎没有执行任何代码。我猜frameRect是零,这不是初始化,但我不知道为什么。有人能帮我解决这个问题吗?

你好,约翰

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-16 01:57:24

好的,解决方案是DropView是NSBox的子类,而不是NSView,即使我不明白为什么.

票数 0
EN

Stack Overflow用户

发布于 2014-12-16 13:04:51

-initWithFrame:打电话了吗?

如果从IB创建视图,请在-initWithCoder:或-awakeFromNib中注册拖放

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27496163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档