iOS7 AutoLayout UIButton没有收到整个按钮的触摸

Posted

技术标签:

【中文标题】iOS7 AutoLayout UIButton没有收到整个按钮的触摸【英文标题】:iOS7 AutoLayout UIButton not receiving touches on entire button 【发布时间】:2013-11-14 19:33:15 【问题描述】:

我的界面中有三个 UIButton。他们有文本和自定义背景图像。我明确设置了这些按钮的大小,以免图像失真。当我对按钮完全没有限制时,它们可以正常工作。当我开始尝试固定它们的尺寸,并将它们固定在底部并彼此居中时,它们会停止接受触摸。嗯,这并不完全正确:他们接受按钮顶部的一个小框的触摸。按钮其余部分的触摸将被忽略。我已经打印出按钮的框架和边界,它们并没有改变我设置的内容。但是,它仍然没有记录超过一半按钮的触摸。在整个过程中,背景图像都不会改变。

有什么可以帮助我弄清楚为什么它没有检测到触摸?

编辑:在做了一些调查之后,我似乎遇到了一个非常令人困惑的问题。我描述的问题只发生在 4 英寸设备上。在 4 英寸设备上运行时,如果我将主视图的背景颜色设置为“默认”,则屏幕底部会出现一个黑色的大条带。正是在这个区域中,命中检测不起作用。这不会在 IB 中显示,因为 IB 只是将视图显示为屏幕的正确尺寸。

我认为这是一个旧应用程序,最初是为 ios 4 部署的。我不确定 UIWindow 设置是否有问题,或者发生了什么。

【问题讨论】:

【参考方案1】:

遍历子视图数组,并记录每一帧。几乎可以肯定,其他一些视图与按钮重叠。

因此,在您的 viewDidAppear 中,获取子视图数组,并打印出每个视图的框架。

这是我见过的与“死”按钮区域相关的唯一问题。

【讨论】:

【参考方案2】:

事实证明,因为这是一个较旧的应用程序,它有一个 MainWindow.xib 文件。在该 MainWindow.xib 文件中,未设置“启动时全屏”设置。设置使它完美地工作。

【讨论】:

以上是关于iOS7 AutoLayout UIButton没有收到整个按钮的触摸的主要内容,如果未能解决你的问题,请参考以下文章

UIButton在iOS7中没有显示突出显示

UIImagePickerController、自定义 UIButton 和 AutoLayout

AutoLayout Circular UIButton - 等效垂直和水平尺寸

如何设置 UILabel 以通过 AutoLayout 包装 UIButton?

如何使用 UIButton 设置 UIimageView 的 AutoLayout 约束?

UISearchBar AutoLayout ios7 错误?