[iOS] 중첩된 뷰의 UserInteractionEnabled

2151 단어 iOS

■개요


xib 파일을 통해 여러 개의 겹쳐진view에 대해 특정view에서만 사용UserInteractionEnabled할 때의 해결 방법을 소개합니다.
애플리케이션을 만들면 무의식중에 이런 상황에 빠질 수 있어요.
동료가 모르니까 모르는 사람도 있을 것 같아요.

◆환경


Xcode: v6.2
Swift: v1.1

■설치


가령 다음과 같은 관점이 있다.

 
등급은 아래와 같다.

큰 테두리View에는 Button가 있고 위에는 View가 겹쳐져 있고 안에는 image가 놓여 있다.
이미지를 표시하고 싶지만 클릭할 때 button이 반응하도록 하려는 것이 이럴 때의 대응법이다.
 
즉, 아래 그림button에만 반응을 일으키고 싶다!이런 상태.

1. 먼저 위의 계층 구조의 큰 View의 UserInteraction Enabled를 True로 설정합니다.


큰 View를 선택하여 Xcode 오른쪽 창의 AttributeInspector 내의 빨간 상자에서 확인합니다.
이렇게 하면 큰 프레임워크의view에 접근할 수 있다.

 

2. Buton보다 상위 뷰의 UserInteraction Ennabled를 가짜로 설정합니다.


위 계층 그림의 회색view를 선택하고 Xcode 오른쪽 창 Attribute Inspector에서 방금 검사한 부분을 검사하면 떼어냅니다.
이렇게 되면 회색view에 대한 상호작용이 효력을 잃게 된다.
회색viewUserInteractionEnabledtrue로 바뀌면 사용자가 터치하는 이벤트가 회색view나 파란색 이미지에 반응하여 button에 도착하지 않습니다.
※ 이때 블루 이미지UserInteractionEnabledfalse 또는 true일 수 있습니다.회색뷰의 반응이 무효인 이상 그 안에 포함된 파란색 이미지도 전달되지 않기 때문이다.
도리에 맞다true의 큰 뷰가 false라면 원래 큰 뷰에 포함된 모든 뷰가 반응을 받지 못한다.
 

3.위의 층도표의 빨간색 butten의 User Interaction Enabled를 진짜로 만들어라.


Xcode 오른쪽 창의 AttributeInspector에서 빨간색 button을 선택하여 다음 빨간색 상자에서 확인합니다.
이렇게 하면 회색view가 겹쳐도 빨간색 button의 상호작용을 할 수 있다.

좋은 웹페이지 즐겨찾기