2016-07-27 11 views
8

का उपयोग करके एनएसडीएटीए के रूप में डॉक्स को साझा करने में सक्षम नहीं है। मैं UIWebView का उपयोग कर रहा हूं जो एक डॉक्स फ़ाइल खोलने के लिए है जो किसी अन्य नियंत्रक से वेबव्यू में पास एनएसडीएटीए के रूप में है। मैं सोशल मीडिया पर सामग्री साझा करने के लिए UIAcvitityController का उपयोग कर रहा हूं। यह छवि प्रकारों और पीडीएफ प्रकारों के लिए ठीक काम करता है लेकिन यह डॉक्स और एक्सएलएसएक्स के लिए काम नहीं करता है। मुझे कुछ भी करने की ज़रूरत है?UIActivityViewController

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:self.downloadData applicationActivities:self.applicationActivities]; 

उत्तर

2

आप activityItems के लिए कस्टम डेटा का उपयोग, और प्रोटोकॉल UIActivityItemSource में तरीकों को लागू करने की जरूरत है। यह पालन करें:

फ़ाइल: ShareData.h

#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 

@interface ShareData : NSObject<UIActivityItemSource> 
@property (nonatomic, strong) NSData *data; 
@property (nonatomic, strong) NSURL *url; 
@end 

फ़ाइल: ShareData.m

#import "ShareData.h" 

@implementation ShareData 
-(id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
    return self.data; 
} 

-(id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
    if ([activityType isEqualToString:UIActivityTypeAirDrop]) { 
     return self.data; 
    } 
    return self.url; 
} 

-(NSString*)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { 
    return @"share data"; 
} 

-(NSString*)activityViewController:(UIActivityViewController *)activityViewController dataTypeIdentifierForActivityType:(NSString *)activityType { 
    if ([activityType isEqualToString:UIActivityTypeAirDrop]) { 
     return @"test"; 
    } 
    return nil; 
} 
@end 

और, सामाजिक मीडिया पर सामग्री साझा:

ShareData *share = [ShareData new]; 
share.data = downloadData; // one of your downloadData 
share.url = downloadURL; // url for the downloadData 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[share] applicationActivities:nil]; 

ऊपर कोड परीक्षण किया गया है, यह डॉक्स और एक्सएलएसएक्स के लिए काम करता है।

स्रोत डेमो यहाँ है: https://github.com/ocarol/UIActivityViewControllerDemo

1

समर्थित डाटा UIActivityViewController द्वारा

enter image description here

प्रकार
संबंधित मुद्दे