如果 UIScrollView 滚动超过一定量,我将如何禁用 UIButton?
Posted
技术标签:
【中文标题】如果 UIScrollView 滚动超过一定量,我将如何禁用 UIButton?【英文标题】:How would I go about disabling a UIButton if the UIScrollView has scrolled more than a certain amount? 【发布时间】:2013-08-30 14:45:24 【问题描述】:这是我一直在尝试的。也许是错误的 scrollViewDidScroll: 委托方法。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
if (_scrollView.contentOffset.y >= 100)
mapLaunchButton.enabled = NO;
感谢您的帮助
【问题讨论】:
你让这个类成为滚动视图的代理吗? 我在界面中有这个delegate
属性设置为self
(或您要使用的任何对象)。如果您使用的是 IB,则需要将东西连接在一起(我不使用 IB)。
@0x7fffffff 当滚动视图从 viewDidload 中设置的位置滚动 100 点时。谢谢!
@rmaddy 我也这样做了。以编程方式。
【参考方案1】:
简单!不过,您需要创建一个变量来存储滚动视图的起始位置。它应该是一个CGPoint。将其设置为 scrollViewWillBeginDragging:
中滚动视图的内容偏移量(滚动视图开始移动的位置),然后在 scrollViewDidScroll 中进行比较,类似于您之前的操作。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
startingPoint = scrollView.contentOffset;
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
if (scrollView.contentOffset.y >= startingPoint.y + 100.0f)
mapLaunchButton.enabled = NO;
请记住,您可能需要根据滚动视图的起始位置以及您希望监控更改的方向稍微修改我提供的值。
【讨论】:
【参考方案2】:- (void)scrollViewDidScroll:(UIScrollView *)scrollView
if (_scrollView.contentOffset.y >= 100)
mapLaunchButton.enabled = NO;
else
mapLaunchButton.enabled = YES;
【讨论】:
【参考方案3】:代码没问题,但你必须为滚动视图添加委托
- (void)viewDidLoad
[super viewDidLoad];
// do whatever
...
// Add the delegate for the scrollview
[_scrollView setDelegate:self];
【讨论】:
以上是关于如果 UIScrollView 滚动超过一定量,我将如何禁用 UIButton?的主要内容,如果未能解决你的问题,请参考以下文章