Objective c uiresponder子类中的touchesStart被忽略
使用目标c和xcode开发ios应用程序。我有一个从另一个从UIResponder继承的类继承的类,它包含一个视图。我在子类中有一个touchesStart,但是只有在调试/开发模式下运行应用程序时才会调用该事件。当我制作制作/发布构建时,触摸事件不会被调用Objective c uiresponder子类中的touchesStart被忽略,objective-c,ios,uiresponder,Objective C,Ios,Uiresponder,使用目标c和xcode开发ios应用程序。我有一个从另一个从UIResponder继承的类继承的类,它包含一个视图。我在子类中有一个touchesStart,但是只有在调试/开发模式下运行应用程序时才会调用该事件。当我制作制作/发布构建时,触摸事件不会被调用 // Basic viewcontroller protocol @protocol SubViewController - (void)viewDidAppear:(BOOL)animated; - (void)viewD
// 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 {
}
现在,正如我所说,在调试中运行这个是可以的,但是在发布中忽略了touch事件。任何有助于澄清这一点的提示、想法或问题,请说。提前谢谢
编辑:我在文档中看到了这一点:“如果您在不调用super(一种常用模式)的情况下重写此方法,那么您还必须重写处理触摸事件的其他方法,如果只是作为存根(empy)实现。”因此,我插入了所有其他触摸事件,但在发布构建时没有任何更改,因为您没有子类化
UIViewController
(它会自动执行此操作),您需要手动将响应者添加到响应者链中
UIViewController
在响应程序链中的位置位于其视图和视图的superview之间,因此要获得相同的行为,您需要覆盖视图和管理它的控制器中的nextResponder
。视图应返回控制器,控制器应返回视图的superview。您没有子类化UIViewController
(已从UIResponder
继承)的任何特定原因?我怀疑您的自定义UIResponder
子类没有正确地添加到响应器链中。嗯,如何检查子类是否添加到响应器链中?或者正确的添加方式是什么?我确信不将uiviewcontroller子类化是有原因的,但我现在想不起来了,这是很久以前写的。参见文档中的第3段。基本上,您需要覆盖您正在管理的视图和“视图控制器”中的nextResponder
。视图将返回视图控制器,视图控制器将返回视图的superview。我将对此进行一次尝试,然后返回到u。你知道为什么它在调试的时候会工作吗?没错,干杯。那里发生了一些奇怪的事情。现在是响应链的一部分。你想这样做作为回答,否则我可以接受
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//some code and magic
}