[英]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.