我遇到一个奇怪的问题,我为iPhone构建的自定义控件在调试模式下构建时效果很好但在内置于发布模式时只能部分工作。
主包装器视图是UIView
的子类,它包含一行作为子视图添加的“按钮”。自定义按钮类扩展UIImageView
并使用以下签名覆盖触摸方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
在构建调试代码时,所有这四个函数都会在您期望的时间调用,在发布版本中,没有任何反应。我已经登录了每一个并且我没有收到任何日志消息(其他日志记录正在运行)。
另一件有趣的事情是,我在包装器视图类中重写了touchesBegan / Moved / Ended方法,它们工作正常。我已经尝试在包装器类中注释掉这些方法,看看它是否对按钮有影响,但它没有。
我也尝试将UIImageView
类更改为UIButton
的子类,但在那里遇到相同的问题,包括touchUpInside之类的任何事件。它们在调试中工作,但不是发布。
我已经尝试过研究这个问题以及一般的事件处理,并且空手而归。有什么想法可以看下一个吗?
答案 0 :(得分:3)
我终于找到了问题 - “按钮”项目的包装高度为0.在调试模式下,应用程序发现按钮被触摸,即使它们不在他们的命中区域内父视图(clipsToBounds默认为NO,因此按钮项仍然完全可见),在发布模式下,没有那么多。
希望这可以帮助节省一些人头疼和调试时间,我不得不通过:)我也发布了这个错误在Apple,所以希望它有一天会被修复。