2011-11-29 5 views
2

내 응용 프로그램에서 ShareKit을 사용할 계획입니다. 나는 또한 인쇄 (AirPrint)하고 싶습니다. 동일한 작업 표에 모든 옵션 (Facebook & Twitter & 프린터)을 가지고 있다고 생각했습니다. 내가 그렇게해서는 안되는 이유가 있습니까? 나는 이것을 달성하는 방법에 대한 몇 가지 팁을 찾고 있었지만 공백이 왔습니다. ActionSheet에서 항목을 제거하고 추가하지는 팁이 있습니다. 프린터 옵션이 '공유'로 간주되지 않습니까?ShareKit에 인쇄 옵션 추가

+0

질문이 SK의 작업 시트에 항목을 추가하는지 또는 iOS에서 인쇄할지 여부는 명확하지 않습니다. Btw 아니오, 공유 메뉴에 인쇄 옵션을 추가하지 않겠습니다. – pt2ph8

+0

이제 질문은 SK의 작업 시트에 인쇄 옵션을 추가하는 것에 관한 것입니다. 그래서 나는 그것을 공유하는 것과 같은 리그에서 인쇄하는 것을 고려하지 않을 것입니다. 나는 그것이 그 때 대답 일 것 같아요. 감사. – Alan

+1

sharekit에 넣으려면 "공유"라고 부를 필요가 없습니다. 나는 그것을리스트에 올리는 것이 완벽하다고 생각합니다. (또는 이미 sharekit과 통합 된 다른 옵션 중 일부와 같은 의미입니다.) 하루가 끝날 때까지 질문에 답을 얻지 못하면 조치를 추가하기 위해 수행 한 작업을 토대로 몇 가지 팁을 전달할 것입니다. (먼저 작업해야합니다.) – Jim

답변

3

ShareKit에 작업을 추가하는 과정은 "How to Add a New Action to ShareKit"에 설명되어 있습니다.이 설명은 이미 핵심 Sharekit 기능을 구현했다고 가정합니다 (예 : ShareKit 예제 프로그램을 구현 한 경우).

새 작업 템플릿을 ShareKit 템플릿 Src 폴더 (.m 및 .h 파일)에서 프로젝트로 복사하고 적절한 이름 (예 : "SHKPrint.m/.h")으로 파일 이름을 바꿉니다. 클래스 이름과 헤더 가져 오기 파일 같은 몇 가지 분명한 변경 사항이 있습니다. 헤더 파일에 #import "SHKSharer.h"을 추가하십시오.

연결된 페이지가 설명하는대로 클래스를 actions/services 목록에 SHKSharers.plist에 추가하십시오. (내가 볼 수있는 행동과 봉사 사이에는이 시점에서 아무런 차이가 없으며, 내가 말할 수있는 한 문제없이 함께 그룹화 될 수있다. 그러나 하나의 구별은 행동이 인증이 필요하지 않습니다. 은 템플릿의 메소드입니다.

그 후 설명서에 따르면 Understanding the share flow에 익숙해졌습니다.

canShare 메서드 중 하나 이상을 재정의해야하며 이미 수정 및 주석 처리를 위해 템플릿에 설정되어 있습니다. 나는 당신의 목적을 위해 canShareText를 공유 할 수있는 적절한 방법으로 생각하고 싶을 것입니다. 그래서 그 것을 바꾸어 YES를 반환하십시오. 그런 다음 UISimpleTextPrintFormatter 또는 UIMarkupTextPrintFormatter에 할당 된 printFormatter를 사용하여 인쇄 할 수 있습니다 (UIPrintInteractionController를 설정하지 않아도 됨). (나는 당신이 인쇄하고 싶은 것을 언급하지 않았기 때문에 즉석에서해야만합니다.)

새로운 제목의 새로운 sharer 클래스에서 sharerTitle 메서드를 수정하여 적절한 제목을 표시하십시오.

이 시점에서 코드를 실행하고 작업 시트를 볼 수 있어야합니다. 이 작업에는 인쇄 작업이 표시되지 않지만 추가 ... 버튼을 클릭하면 두 번째 시트에 인쇄 작업이 표시됩니다.

클릭하면 시트가 숨겨지는 것을 제외하고는 아무 것도 실행되지 않습니다. 이제 인쇄 작업을 수행하는 코드를 추가해야합니다. 나중에 다시 공유하도록 선택하면 가장 최근에 사용한 목록 인 첫 번째 작업 시트에 새 작업이 추가됩니다.

이미 구현 한 것으로 가정했으나 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)의 문자열 이름을 클래스로 변환하고이를 사용하여 클래스 메소드를 호출하여 같은 클래스의 인스턴스를 할당하고 초기화하십시오. (필자는 입력 할 때이 작업을 수행하고 있으므로 "more ..."두 번째 시트에서이 작업을 수행하는 방법을 건너 뛰었습니다.이를 추적하여 작동 방식을 확인하려면 독자에게 맡깁니다.)

SHKSharer 클래스의 share, show 메서드를 통해 실행되는 호출 체인을 통해 공유가 수행됩니다. (여기에는 들어 가지 않을 autosharing에 대한 일부 비즈니스가 있지만 당분간은 무시할 수 있다고 생각합니다.) 이것은 결국 사용자 정의 클래스 (SHKPrint)의 send 메소드에 있습니다. 템플릿 파일을 살펴보면 수행 할 작업에 대한 지침이 제공됩니다.

인쇄에 대한 자세한 내용은 see this link을 참조하십시오. 인쇄 할 수있는 방법을 보여주는 좋은 예입니다.

여기에 몇 가지 이유가 있습니다. 나는 당신의 질문에 답했고, 액션 시트를 추가하는 방법을 생각합니다. 또한 여기에서 테스트 할 AirPrint 기능이 없으므로 독자적으로 더 많은 것을 할 수는 없습니다.

다른 질문이 있으면 알려주세요.

+0

훌륭한 답변입니다. 그것을 쓰는 시간을 보내 주셔서 대단히 감사합니다. 내가 분명치 않은 모든 세부 사항을 다루었다고 확신합니다. 다시. 감사. – Alan