2010-08-18 6 views
0

시나리오 : 내보기 컨트롤러 상단에 UITabBar가 있습니다. 탭바에는 몇 개의 버튼이 있습니다. 사용자가 단추 중 하나를 두드리면 탭 한 단추 바로 아래에 팝업 표시를 표시하려고합니다.특정 위치에 팝업 배치

팝업을 문제없이 표시 할 수 있지만 UITabItem이 프레임 구조를 노출하지 않기 때문에 누른 단추의 위치를 ​​찾는 방법을 알 수 없습니다.

문제를 어떻게 해결할 수 있습니까?

답변

0

당신은 당신의 자신의 UITabBarItem의 프레임을 계산할 수 있습니다

CGFloat tabItemWidth = tabBar.bounds.size.width/[tabBar.items count]; 
CGRect tabItemFrame = CGRectMake(tabItemWidth * [tabBar.items indexOfObject:tabBar.selectedItem], 0, tabItemWidth, tabBar.bounds.size.height); 

(나는이 코드를 시도하지 않은,하지만 이런 식 또는 뭔가 작동합니다).

또는 UITabBar의 하위 클래스를 만들고 touchesEnded : withEvent :를 재정의 할 수 있어야합니다. 그 방법으로, 터치 위치를 ivar에 저장하십시오. 그런 다음 UITabBarDelegate의 tabBar : didSelectItem : 터치 위치를 사용할 수 있습니다.

+0

결과에 따라 업데이트 : 탭 막대 항목에 이미지가있는 경우 UITabBar의 selectedItem 속성을 사용하여 현재 선택된 UITabBarItem을 가져온 다음 탭 표시 줄 항목의 이미지 프레임을 가져올 수 있습니다. presentPopoverFromRect : inView : permittedArrowDirections : animated : – amok

+0

제공된 코드가 컴파일되지 않습니다 (두 번째 줄) - 이진수에 대한 잘못된 피연산자 – amok

+0

오른쪽에서 selectedItem이 색인이 아니라는 것을 인식하지 못했습니다. 나는 그것을 작동해야만하는 것으로 업데이트했지만, 그걸로 작업해야 할 수도 있습니다. 이미 해결책이있는 것처럼 보입니다. –

관련 문제