【发布时间】:2012-01-26 11:47:57
【问题描述】:
使用目标 c 并使用 xcode 开发 ios 应用程序。我有一个继承自另一个继承自 UIResponder 的类的类,它包含一个视图。我在子类中有一个 touchesBegan,但只有在调试/开发模式下运行应用程序时才会调用该事件。当我进行生产/发布构建时,不会调用触摸事件。
// 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)实现。”所以我在所有其他触摸事件中存根,但发布版本没有变化
【问题讨论】:
-
您没有继承
UIViewController(已经继承自UIResponder)的任何特殊原因?我怀疑您的自定义UIResponder子类未正确添加到响应者链中。 -
hmm 我如何检查子类是否已添加到响应者链中?或者添加它的正确方法是什么?我确定没有子类化 uiviewcontroller 是有原因的,但我现在想不起来了,而且是很久以前写的。
-
参见
UIViewController文档中的第 3 段。基本上,您需要在您正在管理的视图和“视图控制器”中覆盖nextResponder。视图将返回视图控制器,视图控制器将返回视图的父视图。 -
试试这个,然后回复你。任何想法为什么它会在调试时工作?
-
干得好欢呼。那里发生了一些奇怪的事情。现在是响应者链的一部分。你想这样做作为答案,或者我可以接受它
标签: objective-c ios uiresponder