57

私は と と を作成しUIActivityViewControllerています。これは明らかに、除外したいいくつかのアイテムを使用するように構成します (私の目的は、アプリに関する情報を共有することです)。StringURLUIActivityViewController

適切なexcludedActivityTypes.

ただし、リマインダーとメモ アプリを除外することはできません。誰かがそれを行う方法を提案できますか? これらのアプリはリストの 3 番目と 4 番目に表示されるため、ユーザーがスクロールしない限り Twitter と Facebook は表示されません。

4

9 に答える 9

56

サブクラス化したくない場合は、作成時にサブクラスUIActivityViewControllerを含めることができます。.excludedActivityTypesUIActivityViewController

目標 C:

UIActivityViewController *activityController = [[UIActivityViewController alloc]initWithActivityItems:sharingItems applicationActivities:nil];
activityController.excludedActivityTypes = @[
    UIActivityTypeAssignToContact,
    UIActivityTypePrint,
    UIActivityTypeAddToReadingList,
    UIActivityTypeSaveToCameraRoll,
    UIActivityTypeOpenInIBooks,
    @"com.apple.mobilenotes.SharingExtension",
    @"com.apple.reminders.RemindersEditorExtension"
];
[self presentViewController:activityController animated:YES completion:nil];

スウィフト 4.2:

let activityController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil)
activityController.excludedActivityTypes = [
    UIActivity.ActivityType.assignToContact,
    UIActivity.ActivityType.print,
    UIActivity.ActivityType.addToReadingList,
    UIActivity.ActivityType.saveToCameraRoll,
    UIActivity.ActivityType.openInIBooks,
    UIActivity.ActivityType(rawValue: "com.apple.reminders.RemindersEditorExtension"),
    UIActivity.ActivityType(rawValue: "com.apple.mobilenotes.SharingExtension")]
present(activityController, animated: true, completion: nil)
于 2016-09-26T19:31:49.087 に答える
35

スウィフト 2.2 バージョン。iOS9.3でテスト済み。動作します。

更新し、App Store Review で承認されました。

import UIKit

class ActivityViewController: UIActivityViewController {

    func _shouldExcludeActivityType(activity: UIActivity) -> Bool {
        let activityTypesToExclude = [
            "com.apple.reminders.RemindersEditorExtension",
            "com.apple.mobilenotes.SharingExtension",
            UIActivityTypeOpenInIBooks,
            UIActivityTypePrint,
            UIActivityTypeAssignToContact,
            "com.google.Drive.ShareExtension"
        ]

        if let actType = activity.activityType() {
            if activityTypesToExclude.contains(actType) {
                return true
            }
            else if super.excludedActivityTypes != nil {
                return super.excludedActivityTypes!.contains(actType)
            }
        }
        return false
    }

}

こちらも便利

 "com.apple.mobileslideshow.StreamShareService"

「クラウド」を取り除きます。

ここに画像の説明を入力

于 2016-05-13T19:13:42.480 に答える
6

UIActivitiesメモとリマインダーはApple ドキュメントのように宣言されていないため、これらを除外することはできません。iOS9 での唯一の問題であり、Apple がこのオプションを提供してくれることを願っています。この時点までに宣言された UIActivities は次のとおりです。

UIActivityTypePostToFacebook, 
UIActivityTypePostToTwitter, 
UIActivityTypePostToWeibo, 
UIActivityTypeMessage, 
UIActivityTypeMail, 
UIActivityTypePrint, 
UIActivityTypeCopyToPasteboard, 
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo,
UIActivityTypePostToTencentWeibo,
UIActivityTypeAirDrop
于 2015-09-22T14:24:55.850 に答える
1

Matteo Pacini が推奨するように _shouldExcludeActivityType を Super に送信できませんでしたが、これを回避する方法は次のとおりです。

@interface CustomActivityViewController()

- (BOOL)_shouldExcludeActivityType:(UIActivity *)activity;

@end

@implementation CustomActivityViewController

(...)

- (BOOL)_shouldExcludeActivityType:(UIActivity *)activity{

    if([[activity activityType]   isEqualToString:@"com.apple.reminders.RemindersEditorExtension"] || [[activity activityType] isEqualToString:@"com.apple.mobilenotes.SharingExtension"]){

    return YES;
}

    return [[super excludedActivityTypes]containsObject:activity.activityType];

 }
于 2015-11-23T13:23:12.387 に答える