如何指定自定義UIActivity
支持主題?自定義UIActivity主題
爲UIActivityItemSource協議的文件中提到,可以實現可選activityViewController:subjectForActivityType:
選擇,如果你想你的源提供一個主題:
當發佈一個項目的服務可以提供一個獨立的學科領域,數據字段,例如電子郵件消息。如果您希望爲支持其中的服務提供主題字段,請實施此方法。
但是,據我所知,它沒有記錄在任何地方,我可能實際上指定我的自定義UIActivity支持主題。這是如何完成的?
編輯:爲了使我的問題更加清晰
假設我有一個自定義活動項目源,說DocumentActivityItemSource
它實現了UIActivityItemSource
協議,我有一個自定義UIActivity
,我們可以稱之爲SendWithFooMessageActivity
。
我然後開始UIActivtyViewController:
NSArray *activityItems = @[[[DocumentActivityItemSource alloc] initWithDocument: document]];
NSArray *applicationActivities = @[[[SendWithFooMessageActivity alloc] init]];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:applicationActivities];
[parentViewController presentViewController:activityViewController
animated:YES
completion:nil];
現在,在彈出的我選擇SendWithFooMessageActivity
。然後,活動控制器將在DocumentActivityItemSource
實例上調用activityViewController:itemForActivityType:
以獲取項目,然後通過調用該對象prepareWithActivityItems:
方法將其轉發到SendWithFooMessageActivity
。
通常情況下,活動項目將是圖像,字符串或網址。在這種情況下,我們假設DocumentActivityItemSource
返回一個字符串,其中包含關於文檔的退出Blurb。 SendWithFooMessageActivity
然後可以使用這個文本作爲它的foo-mail消息的正文。
但是,Foo消息也要求主題有效。有趣的是,UIActivityItemSource
協議還包含可選的activityViewController:subjectForActivityType:
,事實上它被記錄爲提供支持服務的主題。
對於Apple提供的電子郵件活動,實際上會發生 - activityViewController:subjectForActivityType:
在DocumentActivityItemSource
上被調用,並且結果在電子郵件中用作主題。
但是,似乎沒有辦法指定我的自定義SendWithFooMessageActivity
也想從活動項目中獲得主題?文檔提到這發生在「支持[主題]的服務」 - 那麼我如何指定我的服務確實支持其中一個。
此外,activityViewController:thumbnailImageForActivityType:suggestedSize:
也是如此,它應該爲「支持一個的服務」提供縮略圖。這適用於默認的ShareOnTwitter和ShareOnFacebook活動,但似乎沒有辦法讓自定義活動支持它。這可能嗎?
到目前爲止,我已經使用了@chriszumberge下方還提供瞭解決辦法,這是短路activityViewController並直接初始化它來自的ItemSource需要的信息的自定義活動:
[SendWithFooMessageActivity alloc] initWithSubject: document.title];
但這似乎不是整個UIActivityViewController
設置應該使用的方式。
你是如何實施協議的?我認爲UIActivity通常不會訪問原始的UIActivityItemSource。據我瞭解,UIActivityItemSource應該從activityViewController:itemForActivityType返回一個項目,並且該項目應該是NSString,UIImage,UIImage或其他項目,具體取決於您想要共享的項目。 您確定只需將UIActivityItemSource作爲一個項目返回?你能得到這個工作的默認蘋果提供的郵件,Twitter和Facebook的活動? – AHM 2014-09-29 10:58:23