2009-04-20 25 views
1

我有一个奇怪的问题,我为iPhone构建的自定义控件在调试模式下构建时完美工作,但只在构建于发布模式时才部分工作。触摸方法不能与发布版本

主包装视图是UIView的子类,它包含一排作为子视图添加的“按钮”。自定义按钮类扩展UIImageView和压倒一切的触摸方法具有以下特征:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

在构建调试代码,这些功能全部4个被称为在你所期望的时间,与发布版本,没有任何反应。我登录了其中的每一个,但没有收到任何日志消息(其他日志记录正在运行)。

另一个有趣的事情,我有touchesBegan/Moved/Ended方法重写在包装视图类,他们工作正常。我试过在包装类中注释掉这些方法,看看它是否对按钮有影响,但没有。

我也尝试将UIImageView类更改为UIButton的子类,但它们的问题相同,包括touchUpInside之类的任何事件。他们在调试中工作,但不能发布。

我试过研究这个问题以及一般事件处理,并且出现了空手。任何想法接下来看看?

+0

从这个信息有点难以分辨。清理所有目标并重建发布版本时,是否会收到警告?您的版本是否构建在与调试版本不同的目标中? – 2009-04-21 05:52:18

回答

3

我终于想出了这个问题 - “按钮”项目的包装的高度为0.在调试模式下,应用程序发现按钮被触摸,即使它们不在触摸区内他们的父视图(clipsToBounds默认为NO,因此按钮项仍然完全可见),在发布模式中,并非如此。

希望这可以帮助拯救一些人头部划伤和调试时间,我不得不通过:)我也发布了这个到苹果的错误,所以希望它有一天会被修复。