《iOS 6高级开发手册(第4版)》——2.6节秘诀:添加QuickLook动作

    xiaoxiao2023-12-04  187

    本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第2章,第2.6节秘诀:添加QuickLook动作,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

    2.6 秘诀:添加QuickLook动作iOS 6高级开发手册(第4版)值得注意的是,QuickLook不存在于系统提供的活动视图控制器所展示的标准动作集中。你可以轻松地添加一个自定义的动作以提供这种特性,从而提供与秘诀2-5创建的相同预览。这就是秘诀2-6所做的工作,它把秘诀2-5的功能包装进一个自定义的QLActivity类中。

    秘诀2-6将对符合要求的项目执行比你在本章中已经见过的更彻底的搜索。它将搜索传递给它的项目数组,直至找到一个本地文件URL,它可以将其用于文档预览。如果它没有找到这样一个URL,就会从canPerformWithActivityItems:方法返回NO,并且不会列出在活动控制器上。

    秘诀2-6 Quick Look

    @implementation QLActivity { NSArray *items; NSArray *qlitems; QLPreviewController *controller; } // Activity Customization - (NSString *)activityType { return @"CustomQuickLookActivity"; } - (NSString *) activityTitle { return @"QuickLook"; } - (UIImage *) activityImage { return [UIImage imageNamed:@"QL.png"]; } // Items must include at least one file URL - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems { for (NSObject *item in activityItems) if ([item isKindOfClass:[NSURL class]]) { NSURL *url = (NSURL *)item; if (url.isFileURL) return YES; } return NO; } // QuickLook callbacks - (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller { return qlitems.count; } - (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index; { return qlitems[index]; } // Item preparation - (void)prepareWithActivityItems:(NSArray *)activityItems { items = activityItems; controller = [[QLPreviewController alloc] init]; controller.dataSource = self; controller.delegate = self; NSMutableArray *finalArray = [NSMutableArray array]; for (NSObject *item in items) { if ([item isKindOfClass:[NSURL class]]) { NSURL *url = (NSURL *)item; if (url.isFileURL) { QuickItem *item = [[QuickItem alloc] init]; item.path = url.path; [finalArray addObject:item]; } } } qlitems = finalArray; } - (void) previewControllerDidDismiss: (QLPreviewController *)controller { [self activityDidFinish:YES]; } - (UIViewController *) activityViewController { return controller; } @end
    最新回复(0)