如何检测 UIScrollView 何时变为可滚动?

Posted

技术标签:

【中文标题】如何检测 UIScrollView 何时变为可滚动?【英文标题】:How to detect when a UIScrollView becomes scrollable? 【发布时间】:2014-03-17 15:29:32 【问题描述】:

我有一个 UIScrollView 坐在弹出框内。它使用约束固定到弹出框的边缘,并且它的全部内容能够在弹出框中显示而无需滚动(因此滚动视图不可滚动)。当我点击 UITextField(位于此滚动视图内)时,键盘向上滑动并且弹出框调整大小。当弹出框调整大小时,UIScrollView 变小,内容现在可以滚动。

所以我的问题是,如何检测滚动视图何时变为可滚动?

附:我想检测到这一点,以便在可滚动时将 delaysContentTouches 属性设置为 YES,在内容不可滚动时将其设置为 NO。

【问题讨论】:

【参考方案1】:

您可以检查 contentSize 是否大于 scrollView 的边界。

CGSize contentSize = scrollView.contentSize;
CGSize boundsSize = scrollView.bounds.size;
if (contentSize.width > boundsSize.width && contentSize.height > boundsSize.height) 
    // scrollable both vertically and horizontally

else if (contentSize.width > boundsSize.width) 
    // scrollable horizontally

else if (contentSize.height > boundsSize.height) 
    // scrollable vertically

else 
    // same size or smaller, not scrollable

【讨论】:

以上是关于如何检测 UIScrollView 何时变为可滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测用户何时尝试滑动“过去的 UIScrollView 内容偏移”?

检测用户何时中断 UIScrollView 动画

如何检测 UITableView 标题何时滚动?

检测用户何时将手指从 UIScrollView 上移开

在 UIScrollView 的子类中检测滚动

检测 UIScrollview 底部到达