SlideShare a Scribd company logo
1 of 48
Download to read offline
iPhone SDK


       UIDocumentInteractionController


                Quick Look Framework



2011   1   30
iPhone SDK




           http://kishikawakatsumi.com

           Twitter
           @k_katsumi

           24/7 twenty-four seven
           http://d.hatena.ne.jp/KishikawaKatsumi/
2011   1   30
iPhone SDK



            •     touch   •MyWebClip
            •LDR touch    •
            •             •      on the WEB
            •LCD Clock    •i-Radio
            •Subway Map   •
2011   1   30
iPhone SDK

           http://github.com/kishikawakatsumi

            •hatena-touch     •DescriptionBuilder
            •ldr-touch        •TiledLayerView
            •tv-listings      •UICCalendarPicker
            •MapKit-Route-Directions
            •FlipCardNavigationView
            •PhotoFlipCardView
2011   1   30
iPhone SDK




2011   1   30
iPhone SDK


       UIDocumentInteractionController


                Quick Look Framework



2011   1   30
iPhone SDK


  •
  •
  •
  •Quick Look




2011   1   30
iPhone SDK




                             Open in "iBooks"




2011   1   30
iPhone SDK Documents
                 Interacting with




2011   1   30
iPhone SDK

                                      Documents
   WWDC 2010 Session 106 - Understanding the
   Document Interaction Controller

   iOS
   http://developer.apple.com/jp/devcenter/ios/library/documentation/DocumentInteraction_TopicsForIOS.pdf




   Uniform Type Identifiers Reference
   http://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/UTIRef/UTIRef.pdf




2011   1   30
iPhone SDK


                               Sample Code

   DocInteraction
   http://developer.apple.com/library/ios/#samplecode/DocInteraction/Introduction/Intro.html




2011   1   30
iPhone SDK



                      DEMO




2011   1   30
iPhone SDK


       UIDocumentInteractionController




2011   1   30
iPhone SDK

       UIDocumentInteractionController


   + interactionControllerWithURL:




2011   1   30
iPhone SDK

       UIDocumentInteractionController


   NSURL *URL


   NSString *name
   NSString *UTI

2011   1   30
iPhone SDK



                    UI




2011   1   30
iPhone SDK

       UIDocumentInteractionController

  *readonly
  NSArray *icons




2011   1   30
iPhone SDK




2011   1   30
iPhone SDK


- (void)setupDocumentControllerWithURL:(NSURL *)url {
    self.docInteractionController =
     [UIDocumentInteractionController
      interactionControllerWithURL:url];
    self.docInteractionController.delegate = self;
}




2011   1   30
iPhone SDK
NSURL *fileURL =
 [NSURL fileURLWithPath:[[NSBundle mainBundle]
                          pathForResource:documents[indexPath.row]
                                    ofType:nil]];

[self setupDocumentControllerWithURL:fileURL];



cell.textLabel.text = [[fileURL path] lastPathComponent];
NSInteger iconCount = [docInteractionController.icons count];
if (iconCount > 0)
{
    cell.imageView.image =
     [docInteractionController.icons objectAtIndex:iconCount - 1];
}




2011   1   30
iPhone SDK




2011   1   30
iPhone SDK

  UIDocumentInteractionController
  •presentPreviewAnimated:
  •dismissPreviewAnimated:

  Quick Look Framework




2011   1   30
iPhone SDK

[self.docInteractionController presentPreviewAnimated:YES];




#pragma mark -
#pragma mark UIDocumentInteractionControllerDelegate

- (UIViewController *)documentInteractionControllerViewControllerForPreview:
(UIDocumentInteractionController *)interactionController
{
    return self;
}




2011   1   30
iPhone SDK


       Quick Look Framework




2011   1   30
iPhone SDK
QLPreviewController *previewController =
 [[QLPreviewController alloc] init];
previewController.dataSource = self;
previewController.delegate = self;

previewController.currentPreviewItemIndex =
 indexPath.row;

[self
 presentModalViewController:previewController
                   animated:YES];
[previewController release];




2011   1   30
#pragma mark -  iPhone SDK
#pragma mark QLPreviewControllerDataSource

// Returns the number of items that the preview controller should
preview
- (NSInteger)numberOfPreviewItemsInPreviewController:
(QLPreviewController *)previewController
{
    NSInteger numToPreview = 0;

       NSIndexPath *selectedIndexPath =
        [self.tableView indexPathForSelectedRow];
       if (selectedIndexPath.section == 0)
            numToPreview = NUM_DOCS;
       else
            numToPreview = self.documentURLs.count;

       return numToPreview;
}




2011   1   30
// returns the item that the preview controller should preview

                iPhone SDK
- (id)previewController:(QLPreviewController *)previewController
     previewItemAtIndex:(NSInteger)index
{
    NSURL *fileURL = nil;

    NSIndexPath *selectedIndexPath = [self.tableView
indexPathForSelectedRow];
    if (selectedIndexPath.section == 0)
    {
         fileURL =
         [NSURL fileURLWithPath:
          [[NSBundle mainBundle]pathForResource:documents[index]
                                         ofType:nil]];
    }
    else
    {
         fileURL = [self.documentURLs objectAtIndex:index];
    }

       return fileURL;
}


2011   1   30
iPhone SDK

                Quick Look Framework


  •

  •



2011   1   30
iPhone SDK


                Quick Look Framework




2011   1   30
iPhone SDK
  •iWork
  •Microsoft Office   (Office 97    )
  •Rich Text Format(RTF)
  •PDF
  •
  •public.text                UTI(Uniform Type Identifier)
                   (   Uniform Type Identifiers Reference
       )
  •              (CSV)



2011   1   30
iPhone SDK

  UIDocumentInteractionController
  •presentPreviewAnimated:
  •dismissPreviewAnimated:

  Quick Look Framework




2011   1   30
iPhone SDK




2011   1   30
iPhone SDK

       UIDocumentInteractionController


  •presentOptionsMenuFromRect: inView: animated:
  •presentOptionsMenuFromBarButtonItem: animated:
  •dismissMenuAnimated:



2011   1   30
iPhone SDK




                             Open in "iBooks"




2011   1   30
iPhone SDK




2011   1   30
iPhone SDK

       UIDocumentInteractionController


  •presentOpenInMenuFromRect: inView: animated:
  •presentOpenInMenuFromBarButtonItem: animated:
  •dismissMenuAnimated:



2011   1   30
iPhone SDK Documents
                 Interacting with




2011   1   30
iPhone SDK
NSURL *fileURL =
 [NSURL fileURLWithPath:[[NSBundle mainBundle]
                          pathForResource:documents[indexPath.row]
                                    ofType:nil]];

[self setupDocumentControllerWithURL:fileURL];



cell.textLabel.text = [[fileURL path] lastPathComponent];
NSInteger iconCount = [docInteractionController.icons count];
if (iconCount > 0)
{
    cell.imageView.image =
     [docInteractionController.icons objectAtIndex:iconCount - 1];
}




2011   1   30
iPhone SDK




2011   1   30
iPhone SDK




2011   1   30
<plist version="1.0">
<dict>

                iPhone SDK
! <key>CFBundleDocumentTypes</key>
! <array>
! !    <dict>
! !    !   <key>CFBundleTypeName</key>
! !    !   <string>Ika File Format</string>
! !    !   <key>CFBundleTypeExtensions</key>
! !    !   <array>
! !    !   !   <string>ika</string>
! !    !   </array>
! !    !   <key>CFBundleTypeIconFiles</key>
! !    !   <array>
! !    !   !   <string>ika_twitter_01.gif</string>
! !    !   !   <string>ika_twitter_13.gif</string>
! !    !   </array>
! !    !   <key>LSItemContentTypes</key>
! !    !   <array>
! !    !   !   <string>com.kishikawakatsumi.ika</string>
! !    !   </array>
! !    !   <key>LSHandlerRank</key>
! !    !   <string>owner</string>
! !    </dict>
! !    <dict>
! !    !   <key>CFBundleTypeName</key>

2011   1   30
iPhone SDK


  <key>CFBundleTypeName</key>
  <string>PDF File Format</string>




2011   1   30
iPhone SDK


  <key>LSItemContentTypes</key>
  <array>
    <string>com.adobe.pdf</string>
  </array>




2011   1   30
iPhone SDK


  <key>CFBundleTypeIconFiles</key>
  <array>
    <string>ika_twitter_01.gif</string>
    <string>ika_twitter_13.gif</string>
  </array>




2011   1   30
iPhone SDK


  <key>LSHandlerRank</key>
  <string>owner</string>




2011   1   30
iPhone SDK




2011   1   30
iPhone SDK




2011   1   30
iPhone SDK
!      <key>UTExportedTypeDeclarations</key>
!      <array>
!      ! <dict>
!      ! ! <key>UTTypeDescription</key>
!      ! ! <string>Ika File Format</string>
!      ! ! <key>UTTypeIdentifier</key>
!      ! ! <string>com.kishikawakatsumi.ika</string>
!      ! ! <key>UTTypeTagSpecification</key>
!      ! ! <dict>
!      ! ! ! <key>public.filename-extension</key>
!      ! ! ! <string>ika</string>
!      ! ! </dict>
!      ! </dict>
!      </array>




2011   1   30

More Related Content

Similar to UIDocumentInteractionController

LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1Rich Helton
 
Bachelor Thesis-Peter Gerhat
Bachelor Thesis-Peter GerhatBachelor Thesis-Peter Gerhat
Bachelor Thesis-Peter GerhatPeter Gerhat
 
TiAppCamp Atlanta 2013: Alloy Overview
TiAppCamp Atlanta 2013: Alloy OverviewTiAppCamp Atlanta 2013: Alloy Overview
TiAppCamp Atlanta 2013: Alloy OverviewJamil Spain
 
iOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomeriOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomerAndri Yadi
 
Quick Start to iOS Development
Quick Start to iOS DevelopmentQuick Start to iOS Development
Quick Start to iOS DevelopmentJussi Pohjolainen
 
Coding - iPhone Frameworks for Museum Tours
Coding - iPhone Frameworks for Museum ToursCoding - iPhone Frameworks for Museum Tours
Coding - iPhone Frameworks for Museum ToursChris Alexander
 
Beginning Real World iOS App Development
Beginning Real World iOS App DevelopmentBeginning Real World iOS App Development
Beginning Real World iOS App DevelopmentAndri Yadi
 
SplunkLive! Developer Session
SplunkLive! Developer SessionSplunkLive! Developer Session
SplunkLive! Developer SessionSplunk
 
EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices MaoYang Chien
 
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有Kenji Tanaka
 
Developing Interactive systems - lesson 2
Developing Interactive systems - lesson 2Developing Interactive systems - lesson 2
Developing Interactive systems - lesson 2Sónia
 
Intel XDK in Brief
Intel XDK in BriefIntel XDK in Brief
Intel XDK in BriefCamilo Corea
 
打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP彼得潘 Pan
 

Similar to UIDocumentInteractionController (20)

200910 - iPhone at OOPSLA
200910 - iPhone at OOPSLA200910 - iPhone at OOPSLA
200910 - iPhone at OOPSLA
 
iphone presentation
iphone presentationiphone presentation
iphone presentation
 
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
 
ios basics
ios basicsios basics
ios basics
 
Bachelor Thesis-Peter Gerhat
Bachelor Thesis-Peter GerhatBachelor Thesis-Peter Gerhat
Bachelor Thesis-Peter Gerhat
 
TiAppCamp Atlanta 2013: Alloy Overview
TiAppCamp Atlanta 2013: Alloy OverviewTiAppCamp Atlanta 2013: Alloy Overview
TiAppCamp Atlanta 2013: Alloy Overview
 
iOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomeriOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for Jasakomer
 
Quick Start to iOS Development
Quick Start to iOS DevelopmentQuick Start to iOS Development
Quick Start to iOS Development
 
Coding - iPhone Frameworks for Museum Tours
Coding - iPhone Frameworks for Museum ToursCoding - iPhone Frameworks for Museum Tours
Coding - iPhone Frameworks for Museum Tours
 
Beginning Real World iOS App Development
Beginning Real World iOS App DevelopmentBeginning Real World iOS App Development
Beginning Real World iOS App Development
 
Stmik bandung
Stmik bandungStmik bandung
Stmik bandung
 
Introduction of Xcode
Introduction of XcodeIntroduction of Xcode
Introduction of Xcode
 
SplunkLive! Developer Session
SplunkLive! Developer SessionSplunkLive! Developer Session
SplunkLive! Developer Session
 
iOS
iOSiOS
iOS
 
EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices
 
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
 
XCode8.0
XCode8.0XCode8.0
XCode8.0
 
Developing Interactive systems - lesson 2
Developing Interactive systems - lesson 2Developing Interactive systems - lesson 2
Developing Interactive systems - lesson 2
 
Intel XDK in Brief
Intel XDK in BriefIntel XDK in Brief
Intel XDK in Brief
 
打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP
 

Recently uploaded

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Recently uploaded (20)

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

UIDocumentInteractionController

  • 1. iPhone SDK UIDocumentInteractionController Quick Look Framework 2011 1 30
  • 2. iPhone SDK http://kishikawakatsumi.com Twitter @k_katsumi 24/7 twenty-four seven http://d.hatena.ne.jp/KishikawaKatsumi/ 2011 1 30
  • 3. iPhone SDK • touch •MyWebClip •LDR touch • • • on the WEB •LCD Clock •i-Radio •Subway Map • 2011 1 30
  • 4. iPhone SDK http://github.com/kishikawakatsumi •hatena-touch •DescriptionBuilder •ldr-touch •TiledLayerView •tv-listings •UICCalendarPicker •MapKit-Route-Directions •FlipCardNavigationView •PhotoFlipCardView 2011 1 30
  • 6. iPhone SDK UIDocumentInteractionController Quick Look Framework 2011 1 30
  • 7. iPhone SDK • • • •Quick Look 2011 1 30
  • 8. iPhone SDK Open in "iBooks" 2011 1 30
  • 9. iPhone SDK Documents Interacting with 2011 1 30
  • 10. iPhone SDK Documents WWDC 2010 Session 106 - Understanding the Document Interaction Controller iOS http://developer.apple.com/jp/devcenter/ios/library/documentation/DocumentInteraction_TopicsForIOS.pdf Uniform Type Identifiers Reference http://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/UTIRef/UTIRef.pdf 2011 1 30
  • 11. iPhone SDK Sample Code DocInteraction http://developer.apple.com/library/ios/#samplecode/DocInteraction/Introduction/Intro.html 2011 1 30
  • 12. iPhone SDK DEMO 2011 1 30
  • 13. iPhone SDK UIDocumentInteractionController 2011 1 30
  • 14. iPhone SDK UIDocumentInteractionController + interactionControllerWithURL: 2011 1 30
  • 15. iPhone SDK UIDocumentInteractionController NSURL *URL NSString *name NSString *UTI 2011 1 30
  • 16. iPhone SDK UI 2011 1 30
  • 17. iPhone SDK UIDocumentInteractionController *readonly NSArray *icons 2011 1 30
  • 19. iPhone SDK - (void)setupDocumentControllerWithURL:(NSURL *)url { self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url]; self.docInteractionController.delegate = self; } 2011 1 30
  • 20. iPhone SDK NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:documents[indexPath.row] ofType:nil]]; [self setupDocumentControllerWithURL:fileURL]; cell.textLabel.text = [[fileURL path] lastPathComponent]; NSInteger iconCount = [docInteractionController.icons count]; if (iconCount > 0) { cell.imageView.image = [docInteractionController.icons objectAtIndex:iconCount - 1]; } 2011 1 30
  • 22. iPhone SDK UIDocumentInteractionController •presentPreviewAnimated: •dismissPreviewAnimated: Quick Look Framework 2011 1 30
  • 23. iPhone SDK [self.docInteractionController presentPreviewAnimated:YES]; #pragma mark - #pragma mark UIDocumentInteractionControllerDelegate - (UIViewController *)documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *)interactionController { return self; } 2011 1 30
  • 24. iPhone SDK Quick Look Framework 2011 1 30
  • 25. iPhone SDK QLPreviewController *previewController = [[QLPreviewController alloc] init]; previewController.dataSource = self; previewController.delegate = self; previewController.currentPreviewItemIndex = indexPath.row; [self presentModalViewController:previewController animated:YES]; [previewController release]; 2011 1 30
  • 26. #pragma mark - iPhone SDK #pragma mark QLPreviewControllerDataSource // Returns the number of items that the preview controller should preview - (NSInteger)numberOfPreviewItemsInPreviewController: (QLPreviewController *)previewController { NSInteger numToPreview = 0; NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow]; if (selectedIndexPath.section == 0) numToPreview = NUM_DOCS; else numToPreview = self.documentURLs.count; return numToPreview; } 2011 1 30
  • 27. // returns the item that the preview controller should preview iPhone SDK - (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)index { NSURL *fileURL = nil; NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow]; if (selectedIndexPath.section == 0) { fileURL = [NSURL fileURLWithPath: [[NSBundle mainBundle]pathForResource:documents[index] ofType:nil]]; } else { fileURL = [self.documentURLs objectAtIndex:index]; } return fileURL; } 2011 1 30
  • 28. iPhone SDK Quick Look Framework • • 2011 1 30
  • 29. iPhone SDK Quick Look Framework 2011 1 30
  • 30. iPhone SDK •iWork •Microsoft Office (Office 97 ) •Rich Text Format(RTF) •PDF • •public.text UTI(Uniform Type Identifier) ( Uniform Type Identifiers Reference ) • (CSV) 2011 1 30
  • 31. iPhone SDK UIDocumentInteractionController •presentPreviewAnimated: •dismissPreviewAnimated: Quick Look Framework 2011 1 30
  • 33. iPhone SDK UIDocumentInteractionController •presentOptionsMenuFromRect: inView: animated: •presentOptionsMenuFromBarButtonItem: animated: •dismissMenuAnimated: 2011 1 30
  • 34. iPhone SDK Open in "iBooks" 2011 1 30
  • 36. iPhone SDK UIDocumentInteractionController •presentOpenInMenuFromRect: inView: animated: •presentOpenInMenuFromBarButtonItem: animated: •dismissMenuAnimated: 2011 1 30
  • 37. iPhone SDK Documents Interacting with 2011 1 30
  • 38. iPhone SDK NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:documents[indexPath.row] ofType:nil]]; [self setupDocumentControllerWithURL:fileURL]; cell.textLabel.text = [[fileURL path] lastPathComponent]; NSInteger iconCount = [docInteractionController.icons count]; if (iconCount > 0) { cell.imageView.image = [docInteractionController.icons objectAtIndex:iconCount - 1]; } 2011 1 30
  • 41. <plist version="1.0"> <dict> iPhone SDK ! <key>CFBundleDocumentTypes</key> ! <array> ! ! <dict> ! ! ! <key>CFBundleTypeName</key> ! ! ! <string>Ika File Format</string> ! ! ! <key>CFBundleTypeExtensions</key> ! ! ! <array> ! ! ! ! <string>ika</string> ! ! ! </array> ! ! ! <key>CFBundleTypeIconFiles</key> ! ! ! <array> ! ! ! ! <string>ika_twitter_01.gif</string> ! ! ! ! <string>ika_twitter_13.gif</string> ! ! ! </array> ! ! ! <key>LSItemContentTypes</key> ! ! ! <array> ! ! ! ! <string>com.kishikawakatsumi.ika</string> ! ! ! </array> ! ! ! <key>LSHandlerRank</key> ! ! ! <string>owner</string> ! ! </dict> ! ! <dict> ! ! ! <key>CFBundleTypeName</key> 2011 1 30
  • 42. iPhone SDK <key>CFBundleTypeName</key> <string>PDF File Format</string> 2011 1 30
  • 43. iPhone SDK <key>LSItemContentTypes</key> <array> <string>com.adobe.pdf</string> </array> 2011 1 30
  • 44. iPhone SDK <key>CFBundleTypeIconFiles</key> <array> <string>ika_twitter_01.gif</string> <string>ika_twitter_13.gif</string> </array> 2011 1 30
  • 45. iPhone SDK <key>LSHandlerRank</key> <string>owner</string> 2011 1 30
  • 48. iPhone SDK ! <key>UTExportedTypeDeclarations</key> ! <array> ! ! <dict> ! ! ! <key>UTTypeDescription</key> ! ! ! <string>Ika File Format</string> ! ! ! <key>UTTypeIdentifier</key> ! ! ! <string>com.kishikawakatsumi.ika</string> ! ! ! <key>UTTypeTagSpecification</key> ! ! ! <dict> ! ! ! ! <key>public.filename-extension</key> ! ! ! ! <string>ika</string> ! ! ! </dict> ! ! </dict> ! </array> 2011 1 30