2017-08-10 56 views
1

當用戶想要使用UIActivityController共享圖像時,我正在發送圖像和文本。 這適用於電子郵件和Gmail,但它會搞砸whatsapp或Skype(只發送文本)。 所以我想要做的就是分享圖片網址和文字,如果用戶選擇作爲whatsapp或Skype的活動。這可能嗎?根據所選活動共享不同內容 - UIActivityController

我搜索了這個問題,發現你應該分類UIActivityItemProvider,並實現我所做的UIActivityItemSource的方法,但我無法獲得實現方法的回調。

我已經實現了這些方法 activityViewControllerPlaceholderItem:activityViewController:itemForActivityType: ,但我沒有收到回調。

回答

2

只是使UIActivityItemProvider一個子類,並覆蓋item財產,爲自activity items,即

class CustomActivityItemProvider: UIActivityItemProvider 
{ 
    override var item: Any{ 
     switch self.activityType! 
     { 
     case UIActivityType.postToFacebook: 
      return "Hello" 
     default: 
      return "Whatever" 
     } 
    } 
} 

使用它:

let activityItem = CustomActivityItemProvider(placeholderItem: "") 
let activityViewController = UIActivityViewController(activityItems: [activityItem], applicationActivities: nil) 
self.present(activityViewController, animated: true, completion: nil) 

此外,你可以自定義只有那些UIActivityType,被暴露由Apple供開發人員使用。對於UIActivityTypes參考:https://developer.apple.com/documentation/uikit/uiactivitytype

+0

完美和「迅速」的答案。所以顯然我不需要重寫協議方法,如果我想傳遞基於活動類型的自定義數據。 –

+0

Sure..Enjoy .. :) – PGDev

+0

你想要改變什麼? – PGDev