SlideShare a Scribd company logo
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

200910 - iPhone at OOPSLA
200910 - iPhone at OOPSLA200910 - iPhone at OOPSLA
200910 - iPhone at OOPSLA
Javier Gonzalez-Sanchez
 
iphone presentation
iphone presentationiphone presentation
iphone presentation
Dhananjay Fartyal
 
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
Rich Helton
 
ios basics
ios basicsios basics
ios basics
Muthu Sabarinathan
 
Bachelor Thesis-Peter Gerhat
Bachelor Thesis-Peter GerhatBachelor Thesis-Peter Gerhat
Bachelor Thesis-Peter Gerhat
Peter Gerhat
 
TiAppCamp Atlanta 2013: Alloy Overview
TiAppCamp Atlanta 2013: Alloy OverviewTiAppCamp Atlanta 2013: Alloy Overview
TiAppCamp Atlanta 2013: Alloy Overview
Jamil Spain
 
iOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomeriOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for Jasakomer
Andri Yadi
 
Quick Start to iOS Development
Quick Start to iOS DevelopmentQuick Start to iOS Development
Quick Start to iOS Development
Jussi Pohjolainen
 
Coding - iPhone Frameworks for Museum Tours
Coding - iPhone Frameworks for Museum ToursCoding - iPhone Frameworks for Museum Tours
Coding - iPhone Frameworks for Museum Tours
Chris Alexander
 
Beginning Real World iOS App Development
Beginning Real World iOS App DevelopmentBeginning Real World iOS App Development
Beginning Real World iOS App Development
Andri Yadi
 
Stmik bandung
Stmik bandungStmik bandung
Stmik bandung
farid savarudin
 
Introduction of Xcode
Introduction of XcodeIntroduction of Xcode
Introduction of Xcode
Dhaval Kaneria
 
SplunkLive! Developer Session
SplunkLive! Developer SessionSplunkLive! Developer Session
SplunkLive! Developer Session
Splunk
 
iOS
iOSiOS
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
 
XCode8.0
XCode8.0XCode8.0
Developing Interactive systems - lesson 2
Developing Interactive systems - lesson 2Developing Interactive systems - lesson 2
Developing Interactive systems - lesson 2
Sónia
 
Intel XDK in Brief
Intel XDK in BriefIntel XDK in Brief
Intel XDK in Brief
Camilo 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

AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 

Recently uploaded (20)

AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 

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