내 앱에서 버튼을 클릭하면 UIView가 팝업되어 UIView 외부의 아무 곳이나 클릭하여 UIView를 닫을 수 있습니다.
UIView 아래에 큰 투명 단추를 추가하고 단추 동작을 호출하여 UIView를 닫으려고했으나 위쪽 탐색 모음과 아래쪽 탭 모음 때문에 단추를 전체 화면으로 확장 할 수 없습니다.
다른 방법이 있습니까?특정 UIView 외부에서 터치 이벤트 감지
4
A
답변
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로 제스처 인식기를 제거해야합니다. 물론 제스처 인식기에 대한 참조를 유지해야합니다. –
관련 문제
- 1. UIView 배열에서 터치 감지
- 2. UIView 터치 감지
- 3. 보기 외부에서 터치 감지
- 4. 외부에서 시작된 터치 감지
- 5. UIView 배열로 UIScrollView 레이어의 UIView 터치 감지
- 6. 레이아웃 외부에서 터치 이벤트 감지하기
- 7. Android 감지 터치 이벤트
- 8. UILabel에서 터치 이벤트 감지
- 9. 진행중인 터치 이벤트 감지
- 10. UIView 대신 UIViewController의 터치 이벤트
- 11. 특정 sprite 터치 감지
- 12. 보기에서 터치 이벤트 좌표 감지
- 13. Xcode에서 특정 객체의 터치 감지
- 14. 외부에서 손가락을 움직일 때 UIView의 이벤트 터치 이동 방법
- 15. 다른보기에서 끌 때보기에서 터치 이벤트 감지
- 16. 많은 아이들이있는 레이아웃에서 android 감지 터치 이벤트
- 17. rxjs를 사용하여 멀티 터치 장시간 이벤트 감지
- 18. iPhone에서 응용 프로그램의 모든 터치 이벤트 감지
- 19. onInterceptTouchEvent()를 사용할 때 터치 이벤트 감지
- 20. 목표 C : UIScrollView에서 터치 이벤트 감지
- 21. UIButton 터치 감지
- 22. 4x4 iOS 타일에서 터치 다운, 터치 업, touchmove 이벤트 감지
- 23. iOS에서 터치 이벤트 전파
- 24. UiScrollView에서 터치 위치 감지
- 25. UIView 끌기 이벤트
- 26. UIViewController가 있습니다. 그리고 UIView 내부 어떻게 감지 터치 독립적으로?
- 27. Flappy 새 클론의 특정 영역에서 터치 감지
- 28. 애니메이션 (움직이는)보기에서 터치 감지
- 29. UIView 터치 위치 좌표
- 30. 전체 UIView 터치 알림
이의는이 같은 시도를 줘 보자 제스처 인식기에 의해 사용되는 방법을 구현하는 것을 잊지 마세요, 나는 그것을 보았다 이 어딘가에 이렇게 했으니 까 그것이 너무 어땠는지 정확하게 기억할 수는 없지만 너를 도울 수 있기를 바란다. 어쨌든, 'UIView'버튼이 클릭되면 어떻게됩니까? 이제'UIButton '이 어디에 있습니까? 나는 그것이'UIView'의 꼭대기에 앉아 있다고 생각하십니까? 'UIView'는'myView'라고합니다. 이제,'UIControl'의'myView' 서브 클래스를 만드십시오 - 이제 거기에 UIView를 무시하고 무시할 수있는 특정 메소드가 있습니다. 아마 그 방법은 당신이 사용자 탭에서'myView'에'targetAction'을 추가 할 수 있고, 거기서 닫는 것입니다. 나는 어떻게 든 도왔습니다. –
MyView 외부를 클릭 할 때 트리거 할 액션을 이해할 수 없습니까? – bandw
A 버튼이 있다고합시다. A 버튼을 클릭하면 B보기가 올바르게 나타 납니까? 하지만 버튼 A는 아마도 다른 뷰의 하위 뷰입니다. 예를 들어 뷰 C가 제안한 것은'UIControl'의 뷰 C 하위 클래스를 만든 다음 사용자가 뷰 C를 클릭하고 해당 메소드에서 뷰 B를 닫을 때 호출되는 액션 메소드를 추가하는 것입니다 . 나는 그것이 작동해야한다고 생각합니다 ... –