UIWebView를 사용할때면(다른 클래스들의 경우도 그렇겠지만), delegate를 설정할때가 많습니다.  저의 경우에는 delegate를 설정해놓고, UIWebViewDelegate에 정의되어 있는 webView:shouldStartLoadWithRequest:navigationType: 을 많이 사용합니다. 그냥 사용하는 정도의 수준이었는데, 비동기동작을 목적으로 delegate protocol을 정의하고 직접 구현해서 써보니 쉽고 편리했습니다.

우선 UIButton 하나를 추가해서 Touch Up Inside Event와 연결했습니다.

그리고 delegate라고 일을 할 class를 하나 선언했습니다.

@protocol MyButtonHandlerDelegate;
@interface MyButtonHandler : NSObject {
    id <MyButtonHandlerDelegate> delegate;
}
@property (nonatomic, assign) id <MyButtonHandlerDelegate> delegate;
- (void)beginHandle;
@end

@protocol MyButtonHandlerDelegate
- (void)DidButtonPressedEvendHandled;
@end

구현은 그냥 로그만 남기도록 했습니다.

#import "MyButtonHandler.h"
@implementation MyButtonHandler
@synthesize delegate;
- (void)beginHandle {
    NSLog(@"MyButtonHandler::beginHandle called");
    [delegate DidButtonPressedEvendHandled];
}
@end

이제 버튼이 눌려지고나서부터 한번 살펴볼까요? 우선 Touch Up Inside 이벤트와 연결해놓은 메소드가 호출됩니다.

- (void)ButtonPressed:(id)sender {
    NSLog(@"magazinereaderViewController::ButtonPressed called");
    [buttonHandler beginHandle];
}

그리고 MyButtonHandler의 beginHandle 메소드가 호출되구요,
그다음엔 다시 DidButtonPressedEvendHandled가 호출되네요.

- (void)DidButtonPressedEvendHandled {
    NSLog(@"magazinereaderViewController::DidButtonPressedEvendHandled called");
}

이렇게 해서 우선 delegate라는 이름으로 protocol을 한번 구현하고 사용해봤습니다.

아이패드에서 동작하는 매거진 리더앱을 만들기에 필요한 항목들을 나열해봤습니다. 이 항목들을 사용하는 방법과 그때의 유의점을 내용으로 포스팅 할 예정입니다.

  1. Core Data
  2. Network – HTTP(ASynchronized)
  3. Network – AmazonSDK
  4. Delegate
  5. UIWebView
  6. UIScrollView
  7. UIActivityView
  8. UIProgressView
  9. NSAutoreleasePool
  10. NSTimer
  11. ITunes’s File Sharing
  12. JSON
  13. ZIP
  14. NOTIFICATION
  15. URLParser
  16. Popup
  17. Orientation
  18. autoresizingMask
  19. InApp
  20. AppDelegate
  21. performSelectorInBackground:(SEL)aSelector withObject:(id)arg
  22. VerticallyAlignedLabel
  23. scrollToAtIndexPath

아이패드를 이용해서 잡지를 볼 수 있는 앱을 만들어볼 예정입니다만, 속내는 그걸 가능하게 해주는 서비스를 만들어 가면서 생길(^^?) 일화를 다룰 생각입니다.

출판사에서 갖고 있을법한 잡지들의 출판물들을 적절히 html로 변환할 수 있는 어플리케이션이 하나 있으면 될거 같구요, 여기서의 출력물을 클라우드 서버에 업로드 해놓고 관리할 수 있는 서버쪽 프로그램들과 마지막으로 그걸 아이패드로 다운로드 받아서 출력해줄 앱정도로 생각하고 있습니다.

아이패드에서 동작하는 앱에 대해서 간략히 얘기해볼까요?

우선, 자료는 서버(기왕이면 클라우드쪽 서버가 편할거 같네요)에서 받아와서 아이패드에 저장할 수 있도록 하려고 합니다. 무선인터넷이 안되는 곳에서도 볼 수 있으면 좋을거 같아서요.

크게 신간목록을 보여주는 화면과 디렉토리별로 잡지들을 구분해놓은 화면, 다운로드 받아놓은 잡지들을 보여줄 수 있는 화면, 그리고 잡지내용을 볼 수 있는 화면으로 구상하고 있습니다.

아이북스같이 배경에는 근사한 서재그림을 사용하고, 그 앞에 잡지를 대표하는 그림들을 올려두고 싶네요. 그 잡지를 선택하면 다운로드 받을 수 있는 화면을 보여주도록 하구요. 아, 거기서 과월호도 선택할 수 있으면 더욱 좋겠네요.

잡지를 볼때는 portrait과  landscape모드 모두에서  왼쪽, 오른쪽으로 한장한장 옮겨지는 정도의 사용자 경험을 제공하고 싶고, 목차도 있어야 겠네요.

잡지내 어떤 기사가 맘에든다, 잡지내 나오는 여행광고가 좋더라, 트위터랑 연계할까? 등등의 아이디어들도 반영할 수 있지만 속 시끄럽지않도록 하기위해서 그건 좀 뒤로 미루는게 낫겠네요.

요즘 출시되는 아이패드앱들을 비해서 뛰어나진 않지만 간단하고 쉬운 메뉴구성과 html을 이용해서 그림과 기사뿐만 아니라 음악, 동영상, 애니메이션까지 사용자 경험으로 제공할 수 있다고 생각해보니, 나름 괜찮을것 같습니다(하하하하…).