2011-11-29 35 views
2

我打算在我的應用程序中使用ShareKit。我也想打印(AirPrint)。我正在考慮在同一個操作單中添加所有選項(Facebook & Twitter &打印機)。 我有什麼理由不應該這樣做? 我一直在尋找一些關於如何實現這一點的提示,但都是空白的。有一些提示可以從ActionSheet中刪除東西,但不會添加它們。打印機選項不會被視爲「共享」?添加打印選項到ShareKit

+0

目前還不清楚這個問題是關於將項目添加到SK的操作表還是關於在iOS中打印。 Btw不,我不會在共享菜單中添加打印選項。 – pt2ph8

+0

現在問題是關於將打印選項添加到SK的操作表。所以我認爲你不會考慮與共享打印在同一聯盟中。我想那會是答案。謝謝。 – Alan

+1

你不必稱之爲「共享」,將其放入共享包中。我認爲把它列入清單非常有意義。 (或者像其他一些已經與sharekit集成的選項一樣有意義。)如果您的問題在一天結束時還沒有得到解答,那麼我會根據我所做的添加操作的一些提示來傳遞。 (首先必須去上班) – Jim

回答

3

將操作添加到ShareKit的過程在「How to Add a New Action to ShareKit」中進行了介紹。本說明假定您已經實現了一個核心的Sharekit功能(例如,您已經實現了ShareKit示例程序)。

您將從ShareKit Template Src文件夾(.m和.h文件)將新的操作模板複製到您的項目中,使用相應的名稱(如「SHKPrint.m/.h」)重命名文件。有一些明顯的變化,比如類名和頭文件。將#import "SHKSharer.h"添加到頭文件。

將該類添加到SHKSharers.plist中的動作/服務列表中,如鏈接頁面所述。 (在我看到的行動與服務之間,在這一點上實際上沒有任何區別,並且據我所知,他們也可以毫無問題地歸類在一起,但一種區別是,行爲被推定爲requiresAuthentication是模板中的方法。)

然後,如文檔所述,熟悉Understanding the share flow

至少有一個canShare方法需要被覆蓋,並且它們已經在模板中設置,供您修改和取消註釋。我爲了你的目的想象,你可能想考慮將canShareText作爲一個合適的方法來共享,所以改變那個返回YES。然後,您將能夠使用分配給UISimpleTextPrintFormatter或UIMarkupTextPrintFormatter的printFormatter進行打印(但不是沒有設置UIPrintInteractionController)。 (我不認爲你提到了你想要打印什麼,所以你必須即興創作。)

修改新的共享者類中的sharerTitle方法,以顯示適當的標題。

此時,您應該能夠運行您的代碼並查看操作表。您的打印操作不會顯示在此頁面上,但如果您單擊更多...按鈕,它應顯示在第二張紙上。

單擊該操作,除了表單將被隱藏,什麼都不會發生。現在您需要添加一些代碼來執行打印。 (您將在稍後看到,如果您選擇再次共享,則新操作已添加到第一個操作表中,這是最近使用的列表)。

我提到假定您已經實施一個核心的ShareKit功能,比如ShareKit示例程序。如果您轉到調用sharekit操作表的方法(在您自己的代碼中,例如響應按下分享按鈕),您將看到一個地方來確定要共享哪種類型的信息 - 例如URL,圖片,文字......這與您要發送共享信息的位置無關 - 打印機,臉譜,推特,...(我認爲這是把馬車放在馬前,而我修改了我自己的實施來修復此),但忽略了暫時,你會希望將其設置是這樣的:

- (void) shareButtonPressed { 

    SHKItem *item = [SHKItem text:yourSimpleTextOrMarkupText]; 

    // Get the ShareKit action sheet 
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item]; 


    // Display the action sheet 
    [actionSheet showInView:self.view]; 

} 

這使車輪進入運動交流無論是在項目對象。item對象包含一個shareType,在這個例子中是SHKShareTypeText,它是一個枚舉類型。

我不會進入將其轉換爲共享結果的機器。我在睡夢中還不知道它,可能會誤導你(如果我還沒有的話)。

當您單擊操作表中的項目時,SHKActionSheet類會執行一些魔術,將新操作類(本例中爲SHKPrint)的字符串名稱轉換爲類,然後使用它來調用類方法分配和初始化同一個類的一個實例。 (我在鍵入的時候這樣做,所以我跳過了關於如何通過「更多...」第二張紙完成的步驟,我將它留給讀者來跟蹤它並瞭解它是如何工作的。)

通過在SHKSharer類中運行share,然後show方法的呼叫鏈進行共享。 (有一些關於自動聯合的業務,我不會進入這裏,但我認爲你暫時可以忽略這一點。)這終於落在了你的自定義類(SHKPrint)的send方法中。看看你的模板文件,它會給你一些指導。

欲瞭解更多關於打印的信息,see this link,這似乎是一個很好的例子,你可以做什麼打印。

我會在這裏停留的原因有兩個。我想我回答了你的問題,如何添加一個操作表。另外,我沒有AirPrint功能在這裏進行測試,所以我不能單獨進行更多的測試。

讓我知道如果您有任何其他問題。

+0

這是一個很好的答案。非常感謝你花時間寫出來。我很肯定你涵蓋了我不清楚的所有細節。再次。謝謝。 – Alan