提升iPad體驗之 --- iOS Drag and Drop

Drag and Drop官網(wǎng)介紹

無論是應用內, 應用外, 都能拖拽一張圖片或者一段文字直接插入任何視圖. 這是一個非常提升用戶體驗的的feature.

官方dev文檔

用戶操作

用戶操作流程如下, 分為兩種將情況, 從應用內拖拽到應用內(同一篇文章中), 和 iPad分屏下的跨應用拖拽(應用外部).
可拖拽的對象: 文字, 圖片, 鏈接

一. 在應用內部拖拽

  • 環(huán)境: iPhone / iPad 單開應用
  1. 用戶點擊長按, 選中item ( 一段文字或者一張圖片, 或者一個鏈接. )
  2. 拖動item中, 光標跟隨著手指移動.
  3. 釋放item, item落在光標處.
  4. 刪除之前的item所在的位置, 結束

二. 在應用外拖拽

  • 環(huán)境: iPad分屏
  1. 外部App點擊長按, 選中item ( 一段文字或者一張圖片, 或者一個鏈接. )
  2. 拖動item中,
  3. 移動到我們的App里面, 光標跟隨著手指移動.
  4. 釋放item, item落在光標處. 結束

UIDragItem

Drag必須實現(xiàn)的代理方法
數(shù)據(jù)類型必須遵循NSItemProviderWriting和NSItemProviderReading協(xié)議。系統(tǒng)已經(jīng)默認實現(xiàn)了這兩個協(xié)議的類有 NSString, NSAttributedString, NSURL, UIColor, UIImage。

- (NSArray<UIDragItem *> *)dragInteraction:(UIDragInteraction *)interaction itemsForBeginningSession:(id<UIDragSession>)session {
    // 獲取item    
    NSItemProvider *provider1 = [[NSItemProvider alloc] initWithObject:self.img.image];
    UIDragItem *dragItem1 = [[UIDragItem alloc] initWithItemProvider:provider1];
    
    return @[dragItem,dragItem1];
}

UIDragSession

處理session的關鍵點

  1. 獲取當前屏幕的pt
    CGPoint pt = [session locationInView:self.view];
  1. 判斷從內部或者外部拖入
    session.localDragSession

UIDropInteraction

處理釋放

- (void)dropInteraction:(UIDropInteraction *)interaction performDrop:(id<UIDropSession>)session 

demo地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容