개발개발/Mac, iOS

LibActivator Event View / Call Listener

iolate 2011. 11. 14. 22:26
솔직히 이런것들 한국인보단 외국인들이 훨씬 많이 보겠지만
영어로 쓰는건 많이 무리가 있으니.....ㅋㅋ

우선 첫번째, 설정에서 Activator Listener 뷰를 가져오는 방법.
THEOS 에 포함된 헤더엔 관련 부분이 빠져 있으니 그냥 https://github.com/rpetrich/libactivator/ 에서 libactivator.h 를 가져오도록 하자.

libactivator.h 임포트 후에
 

LAEventSettingsController *vac = [[[LAEventSettingsController alloc] initWithModes:[NSArray arrayWithObjects:@"springboard"@"application"@"lockscreen"nil] eventName:eventName] autorelease];

[self pushController:vac];


와 같이 호출해 주면 된다. 

근데,, 사실 저 코드 만으로는 문제가 있는게, PreferenceBundle Extension 에서 네비게이션의 뒤로가기 버튼을 누를 경우
-(void)setRootController:(id)controller; 메소드를 호출하게 된다.
따라서  LAEventSettingsController 를 상속받는 새로운 클래스를 만들고 -(void)setRootController:(id)controller; 메소드를 만들어 두자..

수정된듯...


======================================================

다음은 Activator Listener 직접 호출. Activator 에다가 이벤트를 등록하지 않고 직접적으로 호출하는 방법이며, Listener 이름만 알고 있으면 된다.
(참고로 Activator 는 리스프링 직후 트윅들이 Activator 에 이벤트를 등록하면서 넘겨주는 delegate 를 가지고 있다가  activator:receiveEvent:forListenerName: 메소드를 호출해주는, 싱글톤 방법을 사용한다.)

역시나 LibActivator 소스에서 가져오는 libactivator.h 를 임포트 해주고
아래와 같이 해주면 된다.
 

event 는 굳이 안만들고 msgSend 에서 event 대신 nil 값을 넣어줘도 크게 상관은 없다...ㅎㅎ