2014-09-11 54 views
0

我搜索了很多。但困惑,所以我來這裏解決我的查詢。如何拖放NSScrollView上的子視圖?與LaunchPad完全相同

我要讓視圖這是因爲Mac OS的LaunchPad的完全相同。沒有在Mac上擁有iOS編程方面的專業知識。

這是我的初學者時間到mac osx編程。

請指教哪些部件是最好的部分。

我已經開始與NSScrollView和內子視圖是一個NSView的繼承。

但我對此沒有什麼困惑。

不拖動操作由NSScrollView的子視圖接受?(通常在iOS中有一些棘手的邏輯來實現這一點)。

這是正確的部分,同時拖放或者使用?Drag and Drop Link

有一些鼠標事件也。我想這個Link會很有幫助。

請推薦幾個鏈接或博客推動我在這項任務中前進。

請。

enter image description here

回答

0

您的視圖或窗口需要註冊接收拖動的紙板類型你有興趣:

[self registerForDraggedTypes:@[(id)kUTTypeURL]]; 

拖動時,您將獲得一個第一回調進入查看:

- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)info 
{ 
    NSPasteboard *draggingPasteboard = [info draggingPasteboard]; 
    // NSDragOperation draggingSourceOperationMask = [sender draggingSourceOperationMask]; 

    NSArray   *classes   = @[[NSURL class]]; 
    NSDictionary *options   = @{NSPasteboardURLReadingFileURLsOnlyKey : @YES}; 

    if ([draggingPasteboard canReadObjectForClasses:classes options:options]) { 
     //  NSArray *fileURLs = [draggingPasteboard readObjectsForClasses:classes 
     //               options:options]; 
     // 
     //  if ([fileURLs count] != 1) { 
     //   return NSDragOperationNone; 
     //  } 

     return NSDragOperationLink; 
    } 

    return NSDragOperationNone; 
} 

如果您的視圖拖動結束(例如,文件被刪除),你會得到另一個回調在那裏你可以從剪貼板和PROC閱讀ESS您收到的項目:

- (BOOL)performDragOperation:(id <NSDraggingInfo>)info 
{ 
    NSPasteboard *draggingPasteboard = [info draggingPasteboard]; 

    if ([draggingPasteboard canReadObjectForClasses:[NSArray arrayWithObject:[NSURL class]] options:nil]) { 
     return [self addItemWithDragInfo:info]; 
    } 

    return NO; 
} 

- (BOOL) addItemWithDragInfo:info:(id <NSDraggingInfo>)info 
{ 
    NSPasteboard *draggingPasteboard = [info draggingPasteboard]; 

    NSArray   *classes   = @[[NSURL class]]; 
    NSDictionary *options   = @{NSPasteboardURLReadingFileURLsOnlyKey : @YES}; 

    NSArray   *fileURLs   = [draggingPasteboard readObjectsForClasses:classes options:options]; 

    // TODO: Do something with those files… 

    return YES; 
} 

BTW,LaunchPad的可能使用NSCollectionView或IKImageBrowserView。這些視圖已經包含了一些對拖放的支持。

+0

你確定NSCollectionView對我有幫助嗎? – 2014-09-12 06:43:41

+1

我在Mac應用程序中使用IKImageBrowserView(HoudahSpot,HoudahGeo和Tembo - http://www.hoduah.com)。我記得反覆評估NSCollectionView。不幸的是,我一直忘記爲什麼每次我最終都喜歡通過NSCollectionView的IKImageBrowserView。 – 2014-09-12 08:46:37

+0

有沒有可用的選項來進行摸索?就像LaunchPad中的Utilities文件夾一樣。 – 2014-09-12 09:00:47

相關問題