2013-09-07 1 views
4

내 앱에서 버튼을 클릭하면 UIView가 팝업되어 UIView 외부의 아무 곳이나 클릭하여 UIView를 닫을 수 있습니다.
UIView 아래에 큰 투명 단추를 추가하고 단추 동작을 호출하여 UIView를 닫으려고했으나 위쪽 탐색 모음과 아래쪽 탭 모음 때문에 단추를 전체 화면으로 확장 할 수 없습니다.
다른 방법이 있습니까?특정 UIView 외부에서 터치 이벤트 감지

+0

이의는이 같은 시도를 줘 보자 제스처 인식기에 의해 사용되는 방법을 구현하는 것을 잊지 마세요, 나는 그것을 보았다 이 어딘가에 이렇게 했으니 까 그것이 너무 어땠는지 정확하게 기억할 수는 없지만 너를 도울 수 있기를 바란다. 어쨌든, 'UIView'버튼이 클릭되면 어떻게됩니까? 이제'UIButton '이 어디에 있습니까? 나는 그것이'UIView'의 꼭대기에 앉아 있다고 생각하십니까? 'UIView'는'myView'라고합니다. 이제,'UIControl'의'myView' 서브 클래스를 만드십시오 - 이제 거기에 UIView를 무시하고 무시할 수있는 특정 메소드가 있습니다. 아마 그 방법은 당신이 사용자 탭에서'myView'에'targetAction'을 추가 할 수 있고, 거기서 닫는 것입니다. 나는 어떻게 든 도왔습니다. –

+0

MyView 외부를 클릭 할 때 트리거 할 액션을 이해할 수 없습니까? – bandw

+0

A 버튼이 있다고합시다. A 버튼을 클릭하면 B보기가 올바르게 나타 납니까? 하지만 버튼 A는 아마도 다른 뷰의 하위 뷰입니다. 예를 들어 뷰 C가 제안한 것은'UIControl'의 뷰 C 하위 클래스를 만든 다음 사용자가 뷰 C를 클릭하고 해당 메소드에서 뷰 B를 닫을 때 호출되는 액션 메소드를 추가하는 것입니다 . 나는 그것이 작동해야한다고 생각합니다 ... –

답변

8

거대한 UIButton 귀하의 문제는 그리 좋은 해결책이 아닙니다. 이를 위해 간단하게 UIGestureRecognizer을 사용할 수 있습니다.

이 같은 일을 할당 할 수 있습니다 :

UITapGestureRecognizer *tapImageRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissPopUp)]; 

그런 다음, 당신이 선택한 선택에 응답 할 전망으로 제스처를 추가 할 수 있습니다.

[self.view addGestureRecognizer:tapImageRecognizer]; 

그리고 아마도 다른 사람

[self.navBar addGestureRecognizer:tapImageRecognizer]; 
//etc 

그냥

-(void)dismissPopUp 
{ 
    //your dimiss code here 
} 
+1

코드는 팝업보기를 닫지 만 그 후에는 버튼, 표보기 셀 및 모든 UIControl에서 탭이 작동하지 않습니다. 어떠한 제안? – Hadu

+2

늦어도이 [self.view removeGestureRecognizer : (UIGestureRecognizer *)]와 같이 removeGestureRecognizer로 제스처 인식기를 제거해야합니다. 물론 제스처 인식기에 대한 참조를 유지해야합니다. –

관련 문제