iOS6 UIActivityViewController是否有相同的代码(下面的代码)?问题是,我可以通过URL共享数据并保留文件名吗?截至目前,我可以弄清楚如何做到这一点的唯一方法是将PDF转换为NSData并将数据添加为activityItem.工作正常,但我失去了附加的pdf的名称.
[composer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF.pdf"];
Run Code Online (Sandbox Code Playgroud) 我有一个UIActivityViewController显示在UIViewController(此处命名为 viewCon)上的:
// items contains text and/or image
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact];
[viewCon presentViewController:activityViewController animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)
我正在使用 Xcode 6.1。我的应用程序的部署目标为 7.0。我在两部物理 iPhone(5S (8.0.2) 和 6 (8.1))上运行它。
当我在物理设备上(而不是在模拟器上)为 iOS 7.x 编译我的应用程序时,UIActivityViewController会显示并工作,但它会出现在所有屏幕上(高度太大),并且此日志消息打印在输出中:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) …Run Code Online (Sandbox Code Playgroud) 我想拿出带有 AirDrop 的共享表作为我的应用程序中的唯一选项。
在 iOS 7 中,我可以简单地将所有共享类型添加到( , , ...)excludedActivityTypes的属性中UIActivityViewControllerUIActivityTypeMessageUIActivityTypeMail
但现在在 iOS 8 中,通过应用程序扩展,用户可能会出现额外的共享提供程序。有没有办法只显示AirDrop ?
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[[NSURL URLWithString:url]]
applicationActivities:nil];
NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
UIActivityTypePostToWeibo,
UIActivityTypeMessage, UIActivityTypeMail,
UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
Run Code Online (Sandbox Code Playgroud) 我遵循了类似的 SO 问题的建议,但似乎无法完成这项工作。我正在开发一个游戏,它报告最后一个分数,然后是最后一个分数的共享按钮。
这适用于 iPhone,我的 iPad 代码如下所示。我一点击“分享”按钮,iPad 版本就会崩溃。此代码来自Coding Explorer 上的本教程。
iPad 代码(不起作用)
- (IBAction)shareButton:(id)sender;
{
NSString * text = [NSString stringWithFormat:@"I just scored %li in Flying Freddy. Think you can beat it? https://itunes.apple.com/app/id1033007818", (long)_score];
NSArray *objectsToShare = @[text];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
NSArray *excludeActivities = @[UIActivityTypeAirDrop,
UIActivityTypePrint,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo];
activityVC.excludedActivityTypes = excludeActivities;
[self presentViewController:activityVC animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
iPhone 代码(有效)
- (IBAction)ShareIt {
NSString * text = [NSString stringWithFormat:@"I just scored %li in …Run Code Online (Sandbox Code Playgroud) 我试图找出为什么UIActivityViewController发送一个稍微转换的字符串来共享Mail和微信.
这是我的代码:
let activityViewController = UIActivityViewController(activityItems: ["http://preprodgo.travelstart.com/search-on-index?version=3×tamp=2017-09-15_10-31-27-031"], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
当由Mail共享时,它显示为:
http://preprodgo.travelstart.com/search-on-index?version=3×tamp=2017-09-15_10-31-27-031
Run Code Online (Sandbox Code Playgroud)
系统版本为10.3.3.
如下图所示:
尽管设备语言已设置为阿拉伯语(您可以通过检查状态栏和活动视图控制器标题来识别它)。但是,取消按钮仍然具有“取消”标题;由于我们无法更改其标题,我认为它应该根据设备语言(在我的情况下是阿拉伯语)自动更改(要本地化),如本答案中所述。
我在这里缺少什么?
使用启动外部应用程序时UIActivityViewController,我们可以检测到哪个应用程序completionHandler吗?
在Apple的文档中,提到了一个属性UIActivity.ActivityType,但似乎仅用于检测“内置活动”。我如何检测是否,例如。WhatsApp Messenger已启动?
使用 PDFKit,我在我的应用程序中创建了一个 pdf 文档。我可以成功地在预览中显示它,并在预览控制器中使用以下代码向用户展示共享操作:
@objc func shareAction(_ sender: UIBarButtonItem)
{
if let data = documentData
{
let vc = UIActivityViewController(activityItems: [data], applicationActivities: [])
present(vc, animated: true, completion: nil
}
}
Run Code Online (Sandbox Code Playgroud)
documentData包含创建的 pdf 文档。
当用户选择“保存到文件”时,文档将获得默认名称“PDF Document.pdf”,用户可以更改该名称。
如何提供不同的默认文件名?
我试图在不使用弹出窗口的情况下显示共享表,即没有源视图或箭头。
这是我的代码,从基本的单视图应用程序开始:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func didTapShare(_ sender: UIButton) {
let activity = UIActivityViewController(activityItems: ["banana"], applicationActivities: nil)
if UIDevice.current.userInterfaceIdiom == .pad {
activity.modalPresentationStyle = .formSheet
// activity.preferredContentSize = CGSize(width: 400, height: 400)
}
present(activity, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
这当然是崩溃的
"UIPopoverPresentationController (<UIPopoverPresentationController: 0x7fce07507900>) should have a non-nil sourceView or barButtonItem set before the presentation occurs."
Run Code Online (Sandbox Code Playgroud)
但我不希望它看起来像弹出窗口,或者有箭头——我希望它显示为表单,位于屏幕中间。
这是它在“照片”应用程序中的外观:

如何更改UIActivityViewController模态共享操作中使用的邮件撰写对象的导航栏的外观?

UIActivityViewController符合UIAppearance,所以我认为以下工作确实有效,但事实并非如此.导航栏保持默认蓝色.
activityVC.navigationController.navigationBar.tintColor = [UIColor greyColor];
Run Code Online (Sandbox Code Playgroud)
语境:
- (IBAction)share {
NSString *textToShare = ...;
NSURL *url = ...;
NSArray *activityItems = [[NSArray alloc] initWithObjects:textToShare,url,nil];
UIActivity *activity = [[UIActivity alloc] init];
NSArray *applicationActivities = [[NSArray alloc] initWithObjects:activity, nil];
UIActivityViewController *activityVC =
[[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];
[activityVC setExcludedActivityTypes:[NSArray arrayWithObjects: UIActivityTypeMessage,UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,UIActivityTypePostToWeibo, UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,
nil]];
activityVC.navigationController.navigationBar.tintColor = [UIColor greyColor];
[self presentViewController:activityVC animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
如何将UINavigationBar蓝色的色调更改为灰色.
objective-c modalviewcontroller ios uiappearance uiactivityviewcontroller
ios ×10
objective-c ×3
swift ×2
airdrop ×1
email ×1
files-app ×1
ios-pdfkit ×1
ios11 ×1
ipad ×1
localization ×1
pdf ×1
uiappearance ×1
url ×1
xcode ×1