1
내 앱에서 제시하고있는 SFSafariViewController
에 맞춤 활동 (UIActivity
)을 추가하고 싶습니다. 어떻게해야합니까?SFSafariViewController에 사용자 정의 액티비티를 추가하는 방법은 무엇입니까?
내 앱에서 제시하고있는 SFSafariViewController
에 맞춤 활동 (UIActivity
)을 추가하고 싶습니다. 어떻게해야합니까?SFSafariViewController에 사용자 정의 액티비티를 추가하는 방법은 무엇입니까?
UIActivity
의 하위 클래스를 만듭니다. UIViewController
,
prepareWithActivityItems:
은
SFSafariViewController
컨텍스트 (
rdar://24138390) 내에서 호출되지 않는. 활동에 UI가 표시되지 않는 경우 초기화하는 동안 URL을 저장하는 대신 사용자가 작업을 탭하면 처리 할 수 있습니다.
전체 예 :
@interface YourActivity : UIActivity {
UIViewController *activityViewController;
}
- (id)initWithURL:(NSURL *)url;
@end
@implementation YourActivity
- (id)initWithURL:(NSURL *)url
{
self = [super init];
if (self)
{
[self prepareWithURL:url];
}
return self;
}
- (NSString *)activityType
{
return @"YourTypeName";
}
- (NSString *)activityTitle
{
return @"Perform Action";
}
- (UIImage *)activityImage
{
return [UIImage imageNamed:@"YourActionIcon"];
}
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
{
return YES;
}
- (void)prepareWithActivityItems:(NSArray *)activityItems
{
NSURL* url = nil;
for (NSObject* obj in activityItems)
{
if ([obj isKindOfClass:[NSURL class]])
{
url = (NSURL*)obj;
}
}
[self prepareWithURL:url];
}
- (void) prepareWithURL:(NSURL*)url
{
// initialize your UI using the given URL
activityViewController = ... // initialize your UI here
}
- (UIViewController *)activityViewController
{
return activityViewController;
}
+ (UIActivityCategory)activityCategory
{
return UIActivityCategoryShare;
}
@end
UIActivity
SFSafariViewController
에이 활동을 초기화하고 사용자가보고있는 페이지의 URL에 전달하여 SFSafariViewControllerDelegate
에 다음과 같은 메소드를 구현 추가합니다.
- (NSArray<UIActivity *> *)safariViewController:(SFSafariViewController *)controller
activityItemsForURL:(NSURL *)URL
title:(NSString *)title
{
YourActivity* activity = [[YourActivity alloc] initWithURL:URL];
return @[activity];
}