移动包含 UIButtons 的 UIView 会使这些按钮停止响应点击

Posted

技术标签:

【中文标题】移动包含 UIButtons 的 UIView 会使这些按钮停止响应点击【英文标题】:Moving a UIView containing UIButtons makes those buttons stop respond to taps 【发布时间】:2010-01-30 02:20:47 【问题描述】:

我在 .xib 中的 UIView 中的 UIScrollView 中有一个 UIView,其中包含多个按钮。如果我将 UIView 从 viewWillAppear 内向下移动几个像素,则按钮都会停止响应点击。

这是我用来调整 UIScrollView 大小并向下移动按钮的代码:

    // adjust the view height to accomodate the resized label
    scrollView.contentSize = CGSizeMake( 320, 367 + expectedLabelSize.height - originalLabelSize.height );

    // Adjust the location of buttons
    CGRect buttonsBounds = buttons.bounds;
    buttonsBounds.origin.y -= expectedLabelSize.height - originalLabelSize.height; //XX
    buttons.bounds = buttonsBounds;

如果我注释掉标记为 XX 的行,按钮可以正常工作,但当然是在错误的位置。

如果我尝试不同数量的像素(将expectedLabelSize.height - originalLabelSize.height 替换为硬编码值),我会得到有趣的结果。 10 像素工作正常。 50 像素使我的顶部按钮工作正常,但我的底部按钮失败。 100 像素,两个按钮都失败。 (-50) 像素导致底部按钮工作正常,但顶部按钮失败。

知道可能导致问题的原因吗?我是否需要以某种方式通知按钮其父视图已移动?

【问题讨论】:

【参考方案1】:

问题是我应该使用buttons.frame 而不是buttons.bounds。改用框架解决了这个问题。

【讨论】:

【参考方案2】:

我建议给父 UIView 一个背景颜色并将按钮样式设置为圆角。这样你就可以真正看到屏幕上正在发生的事情。 (假设您在某些图像上使用透明按钮)

【讨论】:

不错的建议,帮助我弄清楚发生了什么。干杯!

以上是关于移动包含 UIButtons 的 UIView 会使这些按钮停止响应点击的主要内容,如果未能解决你的问题,请参考以下文章

可移动的 UIButtons

UIButtons 不动

停止 UIGestureRecognizer 对 UIView 内的 UIButtons 进行操作

UIButtons 不粘在 UIView 边缘

滚动 UICollectionView 时忽略嵌入式 UIButtons 的触摸事件

在 UIView 中循环 UIButtons