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没有收到整个按钮的触摸的主要内容,如果未能解决你的问题,请参考以下文章
UIImagePickerController、自定义 UIButton 和 AutoLayout
AutoLayout Circular UIButton - 等效垂直和水平尺寸
如何设置 UILabel 以通过 AutoLayout 包装 UIButton?