2013-12-12 2 views
2

글쎄, 나는이UISwipeGestureRecognizer 대각선 강타 문제

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib 
    for(int d = UISwipeGestureRecognizerDirectionRight; d <= UISwipeGestureRecognizerDirectionDown; d = d*2) { 
     UISwipeGestureRecognizer *sgr = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)]; 
     sgr.direction = d; 
    [self.view addGestureRecognizer:sgr]; 
    } 
    [self restore]; 
    [self populate]; 
    [self displaymap]; 

}

과 문제가이

-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer 
{ 
printf("Guesture: %d\n", recognizer.direction); 
if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) 
{ 
    printf("a\n"); 
    [self move: 'a']; 
} 
else if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) 
{ 
    printf("d\n"); 
    [self move: 'd']; 
} 
else if (recognizer.direction == UISwipeGestureRecognizerDirectionUp) 
{ 
    printf("w\n"); 
    [self move: 'w']; 
} 
else if (recognizer.direction == UISwipeGestureRecognizerDirectionDown) 
{ 
    printf("s\n"); 
    [self move: 's']; 
} 
else if (recognizer.direction == (UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionUp)) 
{ 
    printf("y\n"); 
    [self move: 'd']; 
} 
} 

같은 인식처럼보기 4 개 인식기를 추가하는 몇 가지 코드를 , 그것은 결코 위로 검출하지 않는다 | 올바른 방향, 아무도이 문제를 해결할 방법을 알고 있습니까?

답변

4

그게 어떻게 direction 속성이 작동하지 않습니다. UISwipeGestureRecognizer는 한 번에 한 방향으로 만 스 와이프를 인식합니다. UIPanGestureRecognizer와 관련된 좀 더 복잡한 작업을 수행하고 -translationInView:/-velocityInView: 메서드의 결과로 방향을 결정해야합니다.

+0

프로그래밍 방식으로 인식기를 추가하는 데 약간의 어려움이 있습니다. 나를 시작할 수 있다고 생각하십니까? – phyrrus9

+0

좋아요, 하나는 기능적입니다, translationInView와 velocityInView를 나눌 것인가, 아니면 /을 "이것을 사용 하시겠습니까?" – phyrrus9

+0

"이것을 사용하십시오." '-velocityInView :'가 아마도 더 좋은 옵션 일 것입니다. 크기가 특정 임계 값을 초과하면 바로 그 벡터에 의해 기술 된 방향으로 제스쳐를 트리거 할 수 있습니다. –