【发布时间】:2011-11-08 14:05:16
【问题描述】:
我知道使用 Apple API 过滤 oneTap/doubleTap。代码如下。
UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTapGestureRecognizer.numberOfTapsRequired = 2;
[self addGestureRecognizer:doubleTapGestureRecognizer];
UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
singleTapGestureRecognizer.numberOfTapsRequired = 1;
**[singleTapGestureRecognizer requireGestureRecognizerToFail: doubleTapGestureRecognizer];**
[self addGestureRecognizer:singleTapGestureRecognizer];
但是 oneTap/doubleTap checkDelayTime 感觉太长了(大约 0.5 秒?)。 一般App用户的反应是很快的。虽然 0.5 秒通常很短。但在移动设备环境中是长期的,因为用户的反应非常重要。
言归正传,YouTubeApp 有一个非常完美的算法来过滤 oneTap/doubleTap。 oneTap-doubleTap checkDelay 是 VeryVeryShort 的完美优化。
oneTap(显示/隐藏控制栏)
doubleTap(完整/默认 videoScreenSize)
如何像 YoutubeApp 一样实现?关于 oneTap-doubleTap 过滤不使用 requireGestureRecognizerToFail 选择器。关于很短的延迟 oneTap-doubleTap 区分。
我认为 YoutubeApp 没有使用 requireGestureRecognizer 选择器。
【问题讨论】:
标签: iphone uigesturerecognizer