UIView ClipToBounds가 상위 뷰 외부의 터치를받는 서브 뷰를 중지하지 않습니다.

StackOverflow https://stackoverflow.com//questions/12714122

문제

두 개의 UIViews가 있습니다. 나는 다른 하나를 내부에서 미끄러 낼 수 있도록 다른 것을 포함하도록 하나를 사용하고 있습니다. Subview가 부모의 경계에 클립이 있더라도 터치 이벤트를 수신하고 다른 뷰의 다른보기에 대한 액세스를 차단하는 문제가 발생합니다.

레이아웃을 보여주는 세 개의 스크린 샷이 있습니다. 나는 부모가 녹색과 아이를 띤다.

사용자는 사용자가 "보기"를 클릭하고 하위보기가 슬라이드를 클릭합니다. 서브 뷰가 기본 위치에 있으면 UITABBAR이 다루고 클릭 할 수 없습니다. 적색보기가 아래쪽에있는 첫 번째 이미지 에서이 문제를 볼 수 있습니다. Subview가 맨 위로 이동되면 이제 uitabbar를 클릭하면 클릭 할 수 있습니다. 세 번째 이미지에서는 녹색 UIView에서 ClipTobounds가 활성화 된 것과 같습니다.

ClipToBounds를 사용하므로 SubView가 기본 UIITABBAR를 차단하는 이유를 이해할 수 없습니다. cliptobounds에 대한 나의 이해가 완전히 틀렸다 ??

도움이 되었습니까?

해결책

ClipTobounds를 사용하면 논리 레이아웃이 아닌 서브 뷰의 시각적 레이아웃에만 영향을줍니다.즉, 내 서브 뷰가 눈에 보이지 않는 동안, 만지는 것이 표시됩니다.

나는 자세한 내용보다는 하위 뷰의 크기를 애니메이닝 하여이 문제를 해결했습니다.아래 코드에서 StationProxImityView가 하위보기입니다.크기가 40 픽셀로 움직여 검은 제목을 다시보기로 가져옵니다.

[UIView beginAnimations:@"stationProximityBar" context:NULL];
self.stationProximityView.view.frame = CGRectOffset(self.stationProximityView.view.frame, 0, -40);
[UIView commitAnimations];
.

더 이상 필요하지 않으면 볼 수 없습니다.

[UIView beginAnimations:@"stationProximityBar" context:NULL];
self.stationProximityView.view.frame = CGRectMake(0 ,0, 320, 500);
[UIView commitAnimations];
.

사용자가보기 단추를 탭하면 전체 하위 뷰가 표시됩니다.

 [UIView beginAnimations:@"stationProximityBar" context:NULL];
 self.stationProximityView.view.frame = CGRectMake(0,460,320,40);
 [UIView commitAnimations];
.

해고는 작은 막대와 같은 방식으로보기를 숨김으로써보기가 숨겨져 있습니다.

 [UIView beginAnimations:@"hideStationProximityBar" context:NULL];
 self.stationProximityView.view.frame = CGRectMake(0,0,320,500);
 [UIView commitAnimations];
.

현재이 코드는 iPhone 5에서만 테스트 중이므로 하드 코딩 된 높이는 이전 iPhone 모델에서 문제가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top