检查UIScrollVIew的contentOffset是否等于某个x值

时间:2013-12-05 02:20:23

标签: ios objective-c scrollview

我在UICollectionViewCell中有一个UIScrollView,我正在尝试在UIScrollView滚动到某个-x值时执行操作。

我试过

CGPoint lastOffset;

if (lastOffset.x < -50 && scrollView.contentOffset.x >= -50) {
    // Animate the star
    NSLog(@"Animate");
}

但问题是只有当scrollVIew返回正常状态时才会调用它。

对于它,我也尝试了

if (scrollView.contentOffset.x >= -50) {
    // Animate the star
    NSLog(@"Animate");
}

但这并不总是被调用。

基本上,我想要创建的东西就像拉动刷新,但在scrollViews的x访问。

另一个例子,如果我想要做的是用于iPhone的Tweetbot 3。如果您在单元格上向右滑动,您可以选择回复,加注星标等。

解决这个问题的最佳方法是什么?

更新:我正在使用UICollectionViewCell。

滚动视图的设置方式如下:

enter image description here

我要做的是将阴沟视图带入:

enter image description here

当scrollView在x轴上达到-50时动画一个小星星。

我将这个视图放置在scrollView的内容边界的负片部分中的原因是为了让scrollView能够快速恢复原位。

更新2:我已经明白了。我很快就会接受我的回答。感谢大家的投入!

3 个答案:

答案 0 :(得分:0)

我也有同样的问题,这是我的解决方案。

1:将视图添加到scrollview,而不是全屏。因为scrollview和tableview将调用触摸事件(ps:U可以触摸触摸事件中的触摸对象)。 就像这样:## Heading ## enter image description here

2:U可以检测到用户触摸时间,例如&gt; = 3s调用scrollview另一个调用tableview。但那不如方法。

关于Tweetbot3 你只需将uiview和uipangesturerecognizer添加到coustom tableview单元格中。并试试这个SWTableViewCell

答案 1 :(得分:0)

您可以使用UIScrollViewDelegate method scrollViewDidScroll:

在滚动期间获取值

self.scrollView.delegate = self;

-(void)scrollViewDidScroll:(UIScrollView*)scrollView {
    if (scrollView.contentOffset.x >= -50) {
        // Animate the star
        NSLog(@"Animate");
    }
}

请注意动画,因为用户可以在contentOffset 50之间来回滚动,这可能会影响您的动画,具体取决于您的设置方式。

答案 2 :(得分:0)

if (lastOffset.x > -50 && scrollView.contentOffset.x <= -50) {
    // Animate the star
    NSLog(@"Animate");
}

我没有检查lastOffest.x是否大于-50,我正在检查它是否更少。

相关问题