2014-04-15 4 views
1

내 응용 프로그램의 UI와 관련이없는 사용자 정의 클래스 (MyEventHandler)가 있습니다. 나는 그것이 MotionShake 이벤트를 잡을 수 있기를 바랍니다. 이해할 수 있도록 MyEventHandler를 첫 번째 응답자로 만들어야합니다.비 뷰 클래스가 FirstResponder가 될 수 있습니까?

다음은 내가 수행 한 작업입니다. MyEventHandlerUIResponder에서 상속 받고 canBecomeFirstResponder 메서드를 구현했습니다. 그러나 becomeFirstResponder을 호출하면 0을 반환하므로 [self isFirstResponder]도 반환됩니다.

현재 응답자를 확인한 결과 nil으로 나타났습니다.

내 ViewController와 동일한 작업을 수행하면 제 질문이 생깁니다. 첫 번째 응답자 인 UIView에서 상속받지 않는 사용자 지정 클래스를 만들 수 있습니까? 당신이보기 계층 구조에없는 뷰 오브젝트에 becomeFirstResponder를 호출 할 경우,이 전무를 반환합니다

@interface MyEventHandler : UIResponder 
    - (void)start; 
@end 

@implementation MyEventHandler 
- (void)start { 
     [self becomeFirstResponder]; 
    } 

- (BOOL)canBecomeFirstResponder { 
     return YES; 
    } 
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { 
     if (motion == UIEventSubtypeMotionShake) { 
      NSLog(@"Shake-shake-shake!"); 
     } 
    } 

@end 

답변

0

:

여기 내가 가지고있는 코드입니다. 당신의 ViewController에 당신이 모션 이벤트를받을 때 목적

, 당신은 통지의 사용은 사용자 정의 클래스에게 (MyEventHandler를) 만들 수

+0

내가 어떤 응용 프로그램에 포함 할 수있는 프레임 워크를 구축하기 위해 노력하고있어, 그래서 나는 앱의 ViewController를 수정할 수 없다. 'becomeFirstResponder'에 대해서는 뷰가 아닌'MyEventHandler' 클래스에서 호출합니다. 그리고 MyEventHandler는 UIResponder 만 상속받습니다. – oranJess