微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NSWindow的dragImage示例?

如何解决NSWindow的dragImage示例?

| 我正在寻找NSWindow的dragImage方法的解释。
- (void)dragImage:(NSImage *)image at:(NSPoint)imageLocation offset:(NSSize)pointerOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pasteboard source:(id)sourceObject slideBack:(BOOL)slideBack
有什么帮助吗?     

解决方法

该方法的NSView文档提供了更详细的解释,包括示例代码。两种方法之间的唯一区别是ѭ1所在的坐标系。可在http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html中找到它。 #// apple_ref / doc / uid / 20000014-SW135 编辑:这是来自该链接的示例代码,带有添加的注释。
- (void)mouseDown:(NSEvent *)theEvent {
    // Create an offset for the offset parameter. Since it is ignored,you should just use 0,0.
    NSSize dragOffset = NSMakeSize(0.0,0.0);
    NSPasteboard *pboard;

    // Get the pasteboard used to hold drag-and-drop data
    pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
    // Declare the data type used on the pasteboard. This sample passes a TIFF representation of an image
    [pboard declareTypes:[NSArray arrayWithObject:NSTIFFPboardType]  owner:self];
    // Add the data to the pasteboard.
    [pboard setData:[[self image] TIFFRepresentation] forType:NSTIFFPboardType];
    // Call dragImage:... with:
    // An image representing the object you are dragging. This could be a file\'s icon or a screenshot of a view,etc.
    [self dragImage:[self image]
    // The starting location of the image in this views coordinates. This should be close to the location of the object you are dragging.
                 at:[self imageLocation]
    // An NSSize structure. This is not used.
             offset:dragOffset
    // The mousedown event
              event:theEvent
    // The pasteboard which contains the data
         pasteboard:pboard
    // The object providing the data
             source:self
    // Whether or not the image should slide to its starting location if the drag isn\'t completed.
          slideBack:YES];

}
源对象(在这种情况下为自身)需要实现NSDraggingSource协议。您可能也对NSPasteboard类参考感兴趣。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。