如果您只想在图像掉落到井上时发生事件:
连接出口面板上的“选定”发送操作。这会将操作发送到您关联的控制器。
如果将 imagewell 连接为控制器上的插座,则可以访问它切换到的图像。或者,您可以访问生成方法的 'sender' 参数,即 NSImageView。
- (IBAction)selector:(id)sender {
}
如果您正在寻找文件名
然后你需要像这个要点一样创建一个 NSImageView 的子类
标题:
#import <Cocoa/Cocoa.h>
@interface KSImageView : NSImageView
@end
执行:
#import "KSImageView.h"
@implementation KSImageView
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
BOOL acceptsDrag = [super performDragOperation:sender];
if (acceptsDrag) {
NSPasteboard *pboard = [sender draggingPasteboard];
NSString *plist = [pboard stringForType:NSFilenamesPboardType];
if (plist) {
NSArray *files = [NSPropertyListSerialization propertyListFromData:[plist dataUsingEncoding:NSUTF8StringEncoding]
mutabilityOption:NSPropertyListImmutable
format:nil
errorDescription:nil];
if ([files count] == 1) {
NSDictionary *userInfo = @{@"imageFileName" : [[files objectAtIndex: 0] lastPathComponent]};
[[NSNotificationCenter defaultCenter] postNotificationName:@"KSImageDroppedNotification"
object:nil
userInfo:userInfo];
}
}
}
return acceptsDrag;
}
- (void) delete:(id)sender {
}
- (void) cut:(id)sender {
}
@end
注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(imageSelected:) name:@"KSImageDroppedNotification" object:nil];
在这里处理:
- (void)imageSelected:(NSNotification *)notification {
}