2013-12-05 6 views
0

У меня есть UIScrollView внутри UICollectionViewCell. Я пытаюсь выполнить действие, когда UIScrollView прокручивается до определенного значения -x.Проверьте, соответствует ли содержимое contentOffset 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"); 
} 

, но это не всегда дозвонились.

В принципе, то, что я пытаюсь создать, это что-то вроде pull для обновления, но в доступе x scrollViews.

Другой пример, если то, что я пытаюсь сделать, это то, что делает Tweetbot 3 для iPhone. Если вы промахнетесь прямо на ячейку, вы получите варианты ответа, звезды и т. Д.

Каков наилучший способ решить эту проблему?

Обновление: Я использую UICollectionViewCell.

Путем Scrollview устанавливается что-то вроде этого:

enter image description here

То, что я пытаюсь сделать, это принести вид водосточной в:

enter image description here

и анимировать маленькую звезду, когда scrollView достигает -50 по оси x.

Причина, по которой я размещаю этот вид и анимацию звезды в отрицательной части границ содержимого scrollView, заключается в том, чтобы позволить scrollView защелкнуться на месте.

Обновление 2: Я понял это. Я скоро приму свой ответ, так как мне позволено. Спасибо за вклад каждого!

+0

Вы пытались использовать UIScrollViewDelegate и используете вычисления в методе scrollViewDidScroll:? https://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html – Chris

+0

@Chris Вот где он находится. –

ответ

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

Я не проверял, было ли lastOffest.x больше -50, я проверял, было ли это меньше.

0

У меня также есть та же проблема, что это мое решение

1:. Addsubview в Scrollview, а не на весь экран. потому что scrollview и tableview вызовут событие touch (ps: U может получить касание объекта в событии касания). : ## Заголовок ## enter image description here

2: U может определять время касания пользователя, например> 3s, вызывать scrollview другой вызов tableview. но это меньше, чем метод.

О Tweetbot3 U просто добавить UIView и uipangesturerecognizer в coustom Tableview клетки.и попробовать это SWTableViewCell

+0

Я использую UICollectionViewCell и размещаю внутри него UIScrollView. Я обновил свой ответ, возможно, это помогает. –

0

Вы можете получить значение во время прокрутки с помощью UIScrollViewDelegate methodscrollViewDidScroll:

self.scrollView.delegate = self;

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

Просто будьте осторожны с анимацией, так как пользователь может прокручивать назад и вперед между contentOffset из 50 что может испортить вашу анимацию в зависимости от того, как вы ее настроили.

+0

Делегат установлен и помещается в scrollViewDidScroll: проблема в том, что он не всегда вызывается, когда он достигает этого значения. Если я потяжу его очень быстро, он не будет вызван, и если я потяжу его очень медленно, он будет вызван. –

Смежные вопросы