ios - iOS 8分享扩展。如何使图像成为必需但文本可选

标签 ios objective-c ios8-share-extension

我希望共享扩展名仅在共享图像时显示。如果正在共享文本和图像,则还应该显示它。

我有

NSExtensionActivationSupportsText = 1
NSExtensionActivationSupportsImageWithMaxCount = 1

但是,如果只有文本,则共享小部件仍会出现。为了我的扩展程序正常工作,必须共享一个图像。

最佳答案

您可以使用"Declaring Supported Data Types for a Share or Action Extension"下的谓词语句。

有关谓词语法的更多信息,请参见here

我认为您想使用以下方式:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
        OR ( ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.text" 
             AND ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image")
    ).@count >= 1
).@count == 1

只需将NSExtensionActivationRule添加到您的NSExtensionAttributes字典即可。将类型设置为字符串,并将值设置为上述子查询。

关于ios - iOS 8分享扩展。如何使图像成为必需但文本可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32452417/

相关文章:

iphone - 为什么这个 iPhone 应用程序的 "quote"按钮没有替换 TextView 的 lorem ipsum?

ios - 更改多个 UITextField 的边框宽度

ios - UICollectionView 的动画框架和布局更改

objective-c - 如何在 Objective-C 中创建数字数组?

ios - 设置约束后导航栏后面的 UITableView

部署后 iOS 共享扩展不起作用

仅限 iOS 共享扩展纵向

swift - 使用 iOS 共享/操作扩展截取主机应用程序的屏幕截图?

iphone - 将iOS SDK从5.1降级到5.0

ios - 如何在选择器中传递自定义 UITableViewCell