我有2个GestureRecognizers,当触发时,同样需要触发动画。
我有两个布尔值,每个布尔值一个,当手势被识别时,它们被设置为yes。
我的问题是,我需要能够在一个识别器中进行检查,以查看另一个识别器是否已被触发。
我目前做了以下工作
[self registerRecognizer:swipeRecognizerRight
onRecognizedBlock:^(UIGestureRecognizer *recognizer) {
NSLog(@"pulled to right");
leftPulled = TRUE;
if (rightPulled) {
[self->delegate executeActionString:someAnimation];
}
leftPulled = FALSE;
}];右侧的识别器也是如此。
leftPulled和rightPulled是实际的对象,一个在左边,一个在右边。
我的问题是,一个识别器在另一个识别器之前执行,因此永远不会出现两个识别器都被识别并触发动画的情况。
如何解决这个问题呢?某种计时器,或者有没有办法对识别器进行编码,以便同时识别这两个识别器,然后触发动画?
发布于 2011-07-20 02:10:24
我认为,您将在UIGestureRecognizerDelegate协议方法中找到自己的方法:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)g1
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)g2;在您的示例中,此方法在两种情况下都应返回YES ( ...:g1 ...:g2和...:g2 ...:g1 ),以便同时识别这两个手势,可以以g1或g2开头。
发布于 2011-07-20 02:11:07
你关于计时器的想法可能是正确的。您需要提出一个阈值持续时间,并简单地使用performSelector:afterDelay:或GCD and a block* (链接到SO问题)来重置您的标志:
int64_t threshold = 1000000; // In nanoseconds
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, threshhold),
dispatch_get_main_queue(),
^{ leftPulled = FALSE; });*我相信对于非常小的延迟,它比NSTimer有更多的准确性,尽管我不确定。
https://stackoverflow.com/questions/6751513
复制相似问题