목적이 c이고 xcode를 사용하는 ios 앱에서 작업합니다. UIResponder로부터 상속받은 다른 클래스에서 상속받은 클래스가 있으며 뷰가 포함되어 있습니다. 하위 클래스 내에 touchesBegan이 있지만 디버그/dev 모드로 앱을 실행할 때만 이벤트가 호출됩니다. 생산/릴리스 빌드를 만들 때 터치 이벤트가 호출되지 않습니다. touchesBegan은 uiresponder 하위 클래스에서 무시되었습니다.
// Basic viewcontroller protocol
@protocol SubViewController
- (void)viewDidAppear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidLoad;
-(UIView *)view;
@end
@interface SubViewController : UIResponder<SubViewController> {
}
/////////////////////////////////////////////////////////////////////////////////
// A custom subview controller
//
@interface mySubViewController : SubViewController {
}
및 mysubviewcontroller 클래스 내에서 내가
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//some code and magic
}
이 지금 내가 디버깅이 실행 특징으로하는 미세하지만 터치 이벤트는 릴리스에서 무시됩니다. 당신을 위해 이것을 명확히하는 데 도움이되는 조언, 아이디어 또는 질문을 말해주십시오. 미리 감사드립니다.
편집 : 나는이 문서에서 이것을 보았습니다. "super (공통 사용 패턴)를 호출하지 않고이 메서드를 재정의하는 경우, 스텁 (empy)으로만 사용하는 경우에는 터치 이벤트를 처리하는 다른 메서드를 재정의해야합니다. 구현. " 그래서 나는 다른 모든 터치 이벤트에서 스텁되었지만 릴리스 빌드는 변경되지 않았습니다.
'UIResponder'에서 이미 상속받은'UIViewController'를 서브 클래 싱하지 않는 특별한 이유가 있습니까? 귀하의 커스텀'UIResponder' 서브 클래스가 반응 체인에 제대로 추가되지 않았다고 의심됩니다. – omz
hmm 서브 클래스가 리스폰 더 체인에 추가되었는지 어떻게 확인합니까? 또는 그것을 추가하는 올바른 방법은 무엇입니까? 내가 uiviewcontroller를 서브 클래 싱하지 않는 이유가 있었다는 것을 확신하지만, 저의 삶에 대해 위선적으로 말하지 않고 오랜 시간 전에 썼습니다. – glogic
[UIViewController'] (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html) 문서의 세 번째 단락을 참조하십시오. 기본적으로 관리하고있는 뷰와 "뷰 컨트롤러"에서'nextResponder'를 오버라이드해야합니다. 뷰는 뷰 컨트롤러를 반환하고 뷰 컨트롤러는 뷰의 수퍼 뷰를 반환합니다. – omz