在iPhone上的照片應用程序中,當您選擇郵件共享選項時,照片會向上滑動的模式視圖控制器動畫。如何修改內置UIActivities的行爲?例如,我希望能夠設置郵件編輯器的主題字段。覆蓋UIActivityViewController的默認行爲
回答
不幸的是,定製UIActivityViewController
郵件編輯器的主題字段尚未運行。
有關於試圖自定義記錄和報告錯誤此這裏討論:
iphone - How do I set recipients for UIActivityViewController in iOS 6?
如果這樣的工作,根據文檔,你就可以自定義這些郵件撰寫字段:
UIActivityTypeMail: 對象將提供的內容發佈到新的電子郵件。當使用此服務的 時,可以提供指向本地文件的NSString和UIImage對象和NSURL對象作爲活動項目的數據。 您也可以指定其內容使用mailto 方案的NSURL對象。
因此,使用mailto模式,當它工作,你應該能夠定製這樣的領域:
NSString *text = @"My mail text";
NSURL *recipients = [NSURL URLWithString:@"mailto:[email protected]?subject=Here-is-a-Subject"];
NSArray *activityItems = @[text, recipients];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
如果您尋找其他方式來定製UIActivityViewController
這裏有一個很好的示例項目:
這是我做的,它的工作對我來說在iOS的7
創建符合UIActivityItemSource協議類:
@interface CustomActivityItem : NSObject <UIActivityItemSource>
@end
在實施覆蓋相關的方法:
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return @"";
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypeMail])
{
return @"Subject"
}
return nil;
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypeMail])
{
return @"body";
}
return nil;
}
然後呈現活動視圖控制器:
CustomActivityItem* activityItem = [[CustomActivityItem alloc] init];
UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[activityItem]
applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
這種方法並沒有出現在iOS9上。你會得到一個錯誤'init'已被明確標記爲不可用。 – DenVog
我仍然在iOS 9中使用這種方法,使用Xcode版本7.0.1(7A1001)進行編譯,並且工作正常。你得到了什麼確切的錯誤? – pedrobolanos
這是否添加收件人? – mKane
- 1. 覆蓋typeheadhead默認行爲
- 2. Bootstrap覆蓋WordPress的默認行爲
- 3. 覆蓋longClick上的默認行爲()
- 4. 覆蓋默認的argparse -h行爲
- 5. 覆蓋GetEnumerator的默認行爲
- 6. 覆蓋JTextPane中TAB的默認行爲
- 7. 覆蓋默認的tableview setEditing行爲
- 8. 覆蓋默認expandablelistview展開行爲
- 9. GWT意見箱覆蓋默認行爲
- 10. 優先級覆蓋默認行爲
- 11. 用默認行爲覆蓋大寫?
- 12. 覆蓋默認值
- 13. WordPress的.htaccess覆蓋默認
- 14. 的fancybox 2默認覆蓋
- 15. 覆蓋TextBox.TextProperty的默認值
- 16. 用默認的覆蓋app.config
- 17. 覆蓋默認的jQuery css?
- 18. Promise默認捕捉執行與覆蓋
- 19. 覆蓋默認_get_for_dict()爲ndb屬性
- 20. 覆蓋默認CSS屬性
- 21. Jquery覆蓋默認功能
- 22. 覆蓋SQL默認值(7)
- 23. Install4j:覆蓋默認回滾
- 24. UIAlertController - 默認覆蓋ActionSheet?
- 25. 覆蓋默認CSS樣式
- 26. NEO4J:CustomHeaders覆蓋默認標題?
- 27. 覆蓋Xamarin默認樣式
- 28. 覆蓋默認構造
- 29. Jquery覆蓋默認定位
- 30. 覆蓋JComboBox默認顏色
謝謝s的鏈接。對於Mail或其他任何不符合您需要的行爲,我相信可以創建一個自定義的UIActivitySource來執行您想要的操作。在這種情況下,排除UIActivityMail,並創建一個自定義活動,填寫主題字段等。 – n13