【问题标题】:Delay scrolling in scrollView在 scrollView 中延迟滚动
【发布时间】:2013-03-19 15:32:33
【问题描述】:

是否可以延迟滚动UIScrollView?我知道,它已经延迟了,但我想增加延迟的时间间隔。有没有办法在不覆盖滚动视图的panGestureRecognizerhandlePan: 的情况下做到这一点?

【问题讨论】:

  • 你能解释一下你对“延迟滚动”的看法吗?您想在延时后触发 UIScrollView 的滚动吗?
  • @Vincent Saluzzo 是的,完全正确。例如,我想在没有反馈的情况下移动手指 1 秒,然后才开始滚动。

标签: objective-c ipad uiscrollview uikit


【解决方案1】:

你可以试试这个:

创建一个DelayGestureRecognizer

#import <UIKit/UIGestureRecognizerSubclass.h>

@interface DelayGestureRecognizer : UIGestureRecognizer

@end

@implementation DelayGestureRecognizer

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesBegan:touches withEvent:event];

    double delayInSeconds = 1.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        self.state = UIGestureRecognizerStateFailed;
    });
}

@end

然后,当你设置你的UIScrollView:

DelayGestureRecognizer *delayGestureRecognizer = [DelayGestureRecognizer new];
[scrollView addGestureRecognizer:delayGestureRecognizer];
[scrollView.panGestureRecognizer requireGestureRecognizerToFail:delayGestureRecognizer];

(你明白了……实际上,最好使用计时器并在UIGestureRecognizer- reset 方法中使计时器无效,以防手势识别器被多次调用不到一秒……)

【讨论】:

  • 好主意。但是状态是只读属性,有没有办法以其他方式将其设置为 UIGestureRecognizerStateFailed?
  • 哦,对不起,它适用于#import
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多