2009-03-15 2 views
6

현재 터치 이벤트는 터치가 발생한 UIView를 보여줍니다. 하지만 원과 같이 직사각형이 아닌 모양의 터치를 감지해야하는 경우에는 어떻게해야합니까? 어떻게 그런 짓을 할까?특정 영역의 터치를 감지하는 방법

기본적으로 볼 수없는 원형 영역 내에서 사용자가 터치하는 경우에만 무언가를하고 싶습니다.

도움/방향에 대해 감사드립니다. TIA!

답변

7

그렇게 하시겠습니까? 'locationInView'는 지정된보기와 관련하여 터치 좌표를 반환하므로 뷰가 화면 상에 있는지 여부에 관계없이보기의 왼쪽 상단 모서리에 터치하면 (0,0)이 반환됩니다.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 

    // gets the coordinats of the touch with respect to the specified view. 
    CGPoint touchPoint = [touch locationInView:self]; 

    // test the coordinates however you wish, 
    ... 
} 

는 다음, 구의 중심에 터치 점까지의 거리를 계산이 구 반경보다 작은 여부를 체크하는 영역에 대해 테스트합니다.

+0

감사합니다. Andrew! 비표준 모양을 알아내는 데 유용한 정보가 있습니까? CGContext를 사용하여 도형을 그리는 것과 같을 것이라고 추측하고 있습니다. 그런 다음 어떻게 되겠습니까? 또는 무엇을 ? – dizy

+0

그리기에는 CGContext를 사용하지만 "IsInside"calc의 경우에는 수학을 사용해야합니다. 폴리곤으로 도형을 표현할 수 있다면 꽤 똑바로 표현할 수 있습니다. 이 링크는 도움이 될 수 있습니다 : http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ –

관련 문제