UIImageView가 있고 사용자가 이미지를 탭한 경우를 알고 싶습니다. touchesBegan에서 나는 다음과 같은 일을하지만 항상 첫 번째 조건으로 끝납니다. 창이 세로 모드이고 이미지가 맨 아래에 있습니다. 나는 창 오른쪽 위를 탭할 수 있으며 여전히 매우 잘못된 것처럼 보이는 첫 번째 조건으로 진행합니다.포인트가 Rect에 없지만 CGRectContainsPoint에 예라고 표시됩니다.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(myimage.frame, location) == 0){
//always end up here
}
else
{ //user didn't tap inside image}
과 값은 다음과 같습니다
location: x=303,y=102
frame: origin=(x=210,y=394) size=(width=90, height=15)
어떤 제안?
docs에 따르지 않음 : developer.apple.com/documentation/graphicsimaging/... "지정된 점이 지정된 사각형 내에 있으면 1을 반환하고, 그렇지 않으면 0을 반환합니다." 위의 코드를 self.view와 함께 사용하면 UIViewController가됩니다. 감사. – 4thSpace
4thSpace : 정확합니다. 점이 사각형 밖에 있기 때문에 0을 반환합니다 (따라서 동등 함이 참입니다). 점이 사각형 내부에 있으면 CGRectContainsPoint는 true (1)을 반환하고 등호는 false가됩니다. –
이미지가 화면을 채우지 않으면 여기서 제시 한 논리가 작동하지 않는다고 언급 할 가치가 있다고 생각합니다. '[touch locationInView : self]'는 뷰 x, y 좌표 평면에 상대적인 포인트를 제공하지만, myimage.frame은 superview에 상대적입니다. – BBonifield