可可拖拉代表没有像我期望的那样工作

时间:2012-04-20 17:23:28

标签: xcode cocoa drag-and-drop

我创建了一个非常简单的类,它继承了NSTextField,因此我可以更好地控制拖放行为,但是我遇到了混乱。根据我认为我在Dragging目的地的apple.developer文档中理解的内容,当我进入或退出文本字段的边界时,我应该能够让代表触发,但我得到的是代表们直到我把一些东西扔进textField然后我试着把它拖出来。

我有一个MyController类,它是一个NSObject,我有一个类型为NSTextField的CustomFields类;控制器类中没有任何内容。

以下是代码:

//  CustomFields.h
//  Drags
//

#import <AppKit/AppKit.h>
#import <Foundation/foundation.h>

@interface CustomFields : NSTextField{

    NSString *tempStorage_;
    unsigned long last_;
}
@property(readwrite, retain) NSString *tempStorage;

@end



//
//  CustomFields.m
//  Drags
//

#import "CustomFields.h"

@implementation CustomFields

@synthesize tempStorage = tempStorage_;


- (id)init{

    if (self) {

        self = [super init];

    }

    return self;
}

-(void)dealloc{

    [self.tempStorage release ];
    [super release];
}

-(void)awakeFromNib{

    NSLog(@"Awake from nib called");

    self.tempStorage = @"";
    self->last_ = 0;
    [self setBackgroundColor:[NSColor lightGrayColor]];
    [self registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypeString ,   NSPasteboardTypeString, nil]];

    [super awakeFromNib];

 }



- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{

    NSLog(@"Inside dragging entered");

        return NSDragOperationCopy;
}



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



- (void)draggingExited:(id <NSDraggingInfo>)sender
{

    NSLog(@"Inside dragging exited");

}

@end


//
//  MyController.h
//  Drags
//


#import <Foundation/Foundation.h>

@class CustomFields;

@interface MyController : NSObject{

    IBOutlet NSButton *myButton_;

    IBOutlet CustomFields *field1_;
    IBOutlet CustomFields *field2_;

}

@end



//
//  MyController.m
//  Drags
//


#import "MyController.h"
#import "CustomFields.h"

@implementation MyController



@end

我确保将正确的类分配给IB中的字段(CustomFields)并连接它们。如您所见,目前我很乐意在适当的时间获取日志声明。我也尝试将MyController类更改为NSViewController和NSView,这样我就可以在那里尝试registerForDraggedTypes。这没有任何帮助,我认为我不应该期待它。我认为我想要的行为应该局限于CustomFields类,这是MyController类暂时为空的原因之一。

所以任何帮助都非常赞赏。

0 个答案:

没有答案