簡體   English   中英

如何禁用拖出我的可可應用程序的功能?

[英]How do I disable dragging out of my Cocoa app?

我有一個Cocoa Mac應用程序,它在應用程序內使用拖放功能。 我想禁用將像圖像之類的東西從我的應用程序拖到其他應用程序(如Finder)的功能。 有沒有辦法做到這一點?

如果有真正的原因為什么必須防止將圖像拖到應用程序外部,則應在Info.plist中聲明自己的UTI ,可以將其用作僅內部拖拽的拖拽類型。

然后,您在聲明粘貼板類型時指定自定義UTI。 例如,在您支持拖動的視圖中:

//the UTI string should match the one in your Info.plist
static NSString* kYourCustomUTIType = @"com.yourCompany.internalDragType";

- (void)mouseDown:(NSEvent *)theEvent
{
    NSSize dragOffset = NSZeroSize;
    NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];

    [pboard declareTypes:[NSArray arrayWithObject:kYourCustomUTIType] owner:self];
    [pboard setData:[[self image] TIFFRepresentation] forType:kYourCustomUTIType];

    [self dragImage:[self image] at:[self imageLocation] offset:dragOffset
        event:theEvent pasteboard:pboard source:self slideBack:YES];

    return;
}

當然,您需要確保拖動目的地也可以理解內部拖動類型。

但是,總的來說,除非您有真正的理由不應該將圖像拖到應用程序之外,否則您應該只允許默認行為。 Mac用戶期望拖放功能能夠“正常工作”,並且通過破壞它,您正在使您的應用脫穎而出,而且效果不佳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM