touchesBegan在uiresponder的子类中被忽略

时间:2012-01-26 11:47:58

标签: objective-c ios uiresponder

使用目标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)实现。”所以我在所有其他触摸事件中都存根,但发布版本没有变化

1 个答案:

答案 0 :(得分:0)

由于您不是子类化UIViewController(自动执行此操作),您需要手动将响应者添加到响应者链中。

响应者链中UIViewController的位置在其视图和视图的超级视图之间,因此要获得相同的行为,您需要在视图和管理的控制器中覆盖nextResponder它。视图应返回控制器,控制器应返回视图的超级视图。