UIActivitiy 및 UIActivityProvider를 사용하도록 코드를 리팩토링하고 있습니다. 트위터가 UIActivityViewController에 더 이상 나타나지 않는 문제가 발생했습니다.여러 UIActivityProvider 클래스를 사용할 때 Twitter가 없습니다.
내 UIActivityProvider 클래스 중 둘 이상이 PlaceholderItem을 UIImage 클래스 객체에 할당 한 경우 Twitter가 표시되지 않는다는 사실을 발견했습니다. 다른 액티비티는 액티비티가 사용할 수없는 자리 표시 자 클래스의 영향을받는 것으로 보입니다.
컨텍스트를 들어, 다음은 설정 코드의 일부입니다 : 내가 사용
NSArray *applicationActivities = @[reviewActivity, myEmailActivity];
NSArray *excludeActivities = @[UIActivityTypeAssignToContact,
UIActivityTypePrint,
UIActivityTypeSaveToCameraRoll,
UIActivityTypePostToWeibo];
UIActivityItemProvider *screenshotProvider = [[ScreenshotActivityProvider alloc] initWithView :self.scrollView];
UIActivityItemProvider *textProvider = [[TextActivityProvider alloc] initWithExchangeDoc:self.docItem];
UIActivityItemProvider *imageProvider = [[ImageActivityProvider alloc] initWithExchangeDoc:self.docItem];
NSArray *activityItems = @[textProvider, screenshotProvider, imageProvider];
applicationActivities:applicationActivities];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems
applicationActivities:applicationActivities];
샘플 UIActivityItemProvider은 다음과 같습니다
- (id)initWithExchangeDoc :(ExchangeDoc *)docItem
{
self = [super initWithPlaceholderItem:[UIImage new]];
_docItem = docItem;
return self;
}
- (id)item
{
if ([self.activityType isEqualToString:UIActivityTypePostToTwitter]) {
return self.docItem.thumbImage;
} else {
return nil;
}
}
문제는 initWithPlaceholderItem에있다. UIImage를 자리 표시 자 클래스로 식별하는 또 다른 UIActivityProvider가 있습니다.
사용자 지정 항목 공급자의 목적은 UIActivityViewContrller를 시작한 후 내 데이터 클래스가 어떤 데이터가 제공되었는지 결정할 수 있다고 생각했습니다. 필자의 경우, 스크린 샷 공급자는 Twitter에 아무 것도 제공하지 않습니다. iOS가 내 자리 표시자를보고 Twitter를 실행 가능한 활동으로 제공하지 않기로 결정한 이유는 무엇입니까? 내 제공 업체는 활동 유형에 따라 누가 이미지를 제공할지 결정합니다.
워드 프로세서 placeholderItem에 대해 이런 말 :
만들려는 실제 개체에 대한에 설 수있는 객체입니다. 객체의 내용은 비어있을 수 있지만 객체의 클래스는 나중에 제공하려는 객체의 클래스와 일치해야합니다.
분명히 트위터와 관련하여 나에게 도움이되지 않습니다. 실험으로 모든 placeholderItems를 비어있는 NSStrings 및 Twitter로 변경했으며 다른 모든 활동은 잘 돌아갔다.
누구나이 placeholderItems가 사용되는 항목을 알고 있으며 잘못된 클래스를 설정하면 부정적인 영향을 미치는지 여부를 알 수 있습니까?
죄송합니다. 너무 오래되었습니다. 도와 주셔서 감사합니다.