在我的代码中,我将手势添加到数组中。那就是我提到的:
- (void)handlePanGesture:(UIPanGestureRecognizer *)panGestureRecognizer{
[arrayLineGestures addObject:panGestureRecognizer];
[arrayAllGestures addObject:[arrayLineGestures copy]];
}
所以过了一段时间我想再次使用它们并使用这段代码:
for (int i=0; i<[arrayAllGestures count]; i++) {
for (int k=0;k<[[arrayAllGestures objectAtIndex:i]count]; k++) {
UIPanGestureRecognizer *panGestureRecognizer=(UIPanGestureRecognizer *)[[arrayAllGestures objectAtIndex:i]objectAtIndex:k];
const CGPoint point = [[CCDirector sharedDirector] convertToGL:[panGestureRecognizer locationInView:panGestureRecognizer.view]];
if (panGestureRecognizer.state == UIGestureRecognizerStateBegan) {Nslog(@"began")}
但是这段代码不起作用。它将pangesture状态显示为UIGestureRecognizerStatePossible。但是在我将它们添加到数组之前,我检查了状态,没有人是UIGestureRecognizerStatePossible。我看不出错误。
感谢。
答案 0 :(得分:0)
任何state
的{{1}}只有在您处理程序时才有效。传入的UIGestureRecognizer
不是状态快照,而是识别器的对象引用。当您将其存储在数组中并稍后尝试引用时,panGestureRecognizer
无效,因为识别器的生命周期可能已过期。
如果遍历数组,您可能会发现所有识别器都是同一个对象。我不知道这是否有保证,所以不要依赖它。