2012-09-09 15 views
5

, 거기 UIView MYVIEW 것이며 UIImageView myimage을는 MYVIEW 뷰 계층 비하인드 :제스처 인식기를 UIImageview에 추가하는 방법은 무엇입니까? 프로젝트

UIWindow
| -있는 UIImageView (myimage을)
| - UIView의 (MYVIEW) 전체 화면]

그런 다음

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
     tapGesture.numberOfTapsRequired = 1; 
     [myImage addGestureRecognizer:tapGesture]; 

의 ViewController

에 myimage을에 제스처 인식기를 추가하지만 제스처 myimage을 영향을주지 않습니다, myimage을가 setUserInteractionEnabled:YES있다. myImage가 myView 앞에 놓인 경우에만 영향을 미칩니다. 어떻게이 문제를 해결할 수 있습니까?

+0

보기 뒤에있는 경우 닿지 않습니다. – ohr

답변

11

UIView은 터치가 UIImageView에 도달하기 전에 분명히 차단합니다.

UIView 앞에 UIImageView을 삽입하거나 UIView에서 사용자 상호 작용을 사용 중지하여 터치를 가로 챌 수 있습니다.

당신은 당신도 할 수있다, 터치 이벤트를 잡기를 통해 미세한 입자가 필요한 경우 :이 경우

  • UIImageView의 상단에 UIView를 넣어 (설계 목적에 예를 들어 그것을 마스크 UIImageView 조금)하지만()이 이벤트를 잡을 userInteractionEnabled = NO을하고, 실제로 UIImageView
  • 외부 이벤트를 잡으려고 UIImageView 아래 다른 UIView를 사용 UIImageView의 상단에 UIView을 유지하고 이벤트를 잡기 유지 (userInteractionEnabled = YES), UIView을 서브 클래 싱하고 pointInside:withEvent: 또는 hitTest:withEvent: 메서드를 재정 의하여 이벤트를 필터링하십시오. 당신이 정말로 the dedicated Apple Programming Guide related to Event Handling을 읽어야 자세한 내용은

.

+0

하지만 myImage는 myView 뒤에 있어야합니다. 터치 시작 중에 탐지를 수행하고 어떤보기가 영향을 미치는지 판단 할 수있는 방법이 있습니까? – pqteru

+0

예. 내 답변에 명시된 바와 같이 UIView에서 사용자 상호 작용을 사용하지 않도록 설정합니다 ('userInteractionEnabled = NO'). 'UIView'가 여전히 'UIImageView'가있는 곳을 제외한 곳에서 터치 이벤트를 캡처해야하는 경우에는 여러 가지 가능성이 있습니다. (1) UIView를 UIImageView의 맨 위에 만들고 userInteractionEnabled = NO'로 만들고 put 'UIImageView' 아래 캡처 된 다른 터치 이벤트를 캡처하거나 (2) UIView를 UIImageView 위에 놓고 서브 클래스를 만들고 hitTest : withEvent :'또는'pointInside : withEvent :'UIView 메소드 – AliSoftware

1

내 코드 :

UILongPressGestureRecognizer *press = [[UILongPressGestureRecognizer alloc] 
initWithTarget:self action:@selector(hasLongPressed)]; 
[press setMinimumPressDuration:0.1f]; //1ms 
press.delegate = (id)self; 
[self.DGEMLogo addGestureRecognizer:press]; 

두 가지 속성이

1) 할 당신의 UIImageView (self.DGEMLogo) [self.DGEMLogo addGestureRecognizer : 키를 누릅니다]에 GestureRecognizer를 추가 할이 켜지지이다;

2) 은있는 UIImage 속성의 상호 작용이 TRUE

그게 모두 사용 가능으로 설정합니다.

관련 문제