SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler 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

Mais conteúdo relacionado

Semelhante a 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
 

Semelhante a 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
 

Último

Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 

Último (20)

Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 

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