iPhone 용 응용 프로그램을 개발 중이며 사용자가 특정 경로를 따라 손가락을 움직이는 것을 감지하고 싶습니다.마우스/손가락이 특정 경로를 따라 움직이는 지 어떻게 감지합니까?
특히 사용자가 특정 원형 경로를 따라 손가락을 움직일 때를 감지하고 싶습니다.
이것은 아마도 경로를 따라 마우스 움직임을 감지하는 데 쉽게 적용될 수 있습니다.
iPhone 용 응용 프로그램을 개발 중이며 사용자가 특정 경로를 따라 손가락을 움직이는 것을 감지하고 싶습니다.마우스/손가락이 특정 경로를 따라 움직이는 지 어떻게 감지합니까?
특히 사용자가 특정 원형 경로를 따라 손가락을 움직일 때를 감지하고 싶습니다.
이것은 아마도 경로를 따라 마우스 움직임을 감지하는 데 쉽게 적용될 수 있습니다.
아이폰 SDK 자체에 익숙하지 않아 비표준 제스처 캡처 기능이 내장되어 있는지 확실하지 않습니다. 그러나 여기에서 할 수있는 수동 방법 중 하나가 있습니다.
This tutorial은 플래시 용이지만 동일한 제스처 원칙에 따라 작동합니다. 각 방향은 숫자를 나타냅니다. 포인팅 장치를 사용하여 원을 따라 가면 시간 경과에 따라 이동 한 방향을 나타내는 일련의 숫자가 생성됩니다. 해당 숫자 순서를 원을 나타내는 미리 정의 된 순서와 비교하십시오. 일치하면 이벤트를 시작하십시오.
제스처를 "퍼지 (fuzzy)"처럼 만드는 방법을 설명하는 튜토리얼이 많아서 덜 정밀한 포인트 동작이 필요합니다.
특정 경우처럼 구현하기가 쉽습니다. 입력 영역을 네 사분면으로 나누고 각 사분면을 통해 위치를 추적합니다. 퀀란 트 랜트의 순서는 그들이 원을 완료했거나 여행했는지 여부를 결정합니다.
static touchKeeper; //touch, quadrant
static touchIndex=0;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
touchKeeper[touchIndex].touch = touch;
touchKepper[touchIndex].quadrant = DetectQuadrant(touch));
if (touchIndex > 3 && (touchKeeper[3].quadrant == touchKeeper[2].quadrant+1 == touchKeeper[1].quadrant+2 == touchKeeper[0].quadrant+3)) {
[self doCircleAction];
touchIndex=0;
}
else touchIndex++;
}
아이디어는 당신이 단지 대략 영역에 특정 터치를 식별 할 필요가있다 :
의사 코드는 생각을 설명합니다. 그래서 사분면 루틴은 다음과 같이합니다 :
int DetectQuadrant(UITouch *touch) {
CGPoint point;
point = [touch locationInView:self];
if (endPoint.x > X1 && endPoint.x < X2 && endPoint.Y > Y1 && endPoint.Y < Y2)
return QUAD1;
} else etc
나는 예를 들어 사분면을 사용 - 명확하게 사각형을 그리고 생각할 수있는 '원!'. Detect 메서드에서 더 많은 영역을 만들면 정확도가 향상됩니다. 주요 개념은 과도한 복잡성 (베 지어 곡선 감지 또는 유사한 말도 안 함)없이 원하는 동작을 달성하기 위해 영역 시퀀스로 생각하는 것입니다. 이 의사 코드는 확실히 잔인한 것이므로 구현을 기교있게 만드는 좋은 방법이있을 것이라고 확신합니다. 나는 내가 연구하고있는 프로젝트에 대한 '원 운동 감지 (circular motion detection)'에 대해 생각 해왔다. 그리고 이것은 내가 생각해 낸 거친 생각이었다.
즐기십시오!
크레딧을 지불해야하는 크레디트. 이 아이디어는 문자를 식별하는 데 몇 가지 고유 한 포인트 만 필요하다는 연구 결과가있는 문자 및 필기 감지에 대한 IBM의 보고서를 기반으로합니다. 따라서 'E'를 추적하는 대신 OCR은 가장 적은 고유 위치를 찾습니다. –