iPhone UIScrollview:当位于 Scroll View 的子 UIView 上的 480 像素以下时,按钮不响应

Posted

技术标签:

【中文标题】iPhone UIScrollview:当位于 Scroll View 的子 UIView 上的 480 像素以下时,按钮不响应【英文标题】:iPhone UIScrollview: Button does not respond when located below 480 pixels on Scroll View's child UIView 【发布时间】:2009-08-18 16:56:59 【问题描述】:

我在 Interface Builder 中为 iPhone 应用程序构建了一个视图。它是一个 UIScrollview,在 UIView 上有一个 UIView 和一个 UIButton。我唯一的代码是在 xib 的 File Owner 类的 viewDidLoad 方法中将滚动视图的 contentSize 设置为 320x550。当按钮在正常视图区域 (320x480) 内时,按钮会正常响应,但如果在 Interface Builder 中放置在这些边界之外,当我滚动到它并单击按钮时,按钮将不会响应。

我错过了什么?我想这可能是我需要在 UIView 上设置的东西。但我不确定那是什么。

【问题讨论】:

【参考方案1】:

您的 UIButton 即使可见也不会响应,因为它不在父视图的边界内。您可以在其父视图边界之外看到对象,因为它是 UIView 绘制所有子视图的默认行为(clipsToBounds = NO)

要了解真相,请尝试此代码。

UIView *yourUIView = ...
yourUIView.clipsToBounds = YES;
yourUIView.backgroundColor = [UIColor cyanColor];

您将不再看到您的 UIButton。

要解决此问题,请放大您的 UIView。

【讨论】:

【参考方案2】:

我和发布问题的人有同样的问题。感谢第一个答案,我知道该怎么做。我通过调整框架增加了视图的高度。这显然必须在代码中完成。但是,完成此操作后,底部的工具栏将不再可见。所以在我调整视图的高度之前,我抓住了工具栏的位置。然后在调整视图的高度后,我重新设置了工具栏的位置。现在一切都很好。

【讨论】:

调整什么框架?滚动视图? 通过调整Frame内容视图的框架(即框架内的UIView)。

以上是关于iPhone UIScrollview:当位于 Scroll View 的子 UIView 上的 480 像素以下时,按钮不响应的主要内容,如果未能解决你的问题,请参考以下文章

当 UITextField 位于 UIScrollView 内时,使用 Tap Gesture 关闭键盘的问题。

iPhone:在 UIScrollView 内无限循环内容

iPhone - 知道UIScrollView是否达到顶部或底部

移动到另一个文本字段时,为啥 UIScrollView 会重新调整大小 - iOS iPhone

UIScrollView 在内容小于视图大小时反弹

UIScrollView 不使用自动布局约束