2012-04-12 2 views
0

회전 및 사용자 지정 배열을 처리하는 사용자 지정 UIToolbar을 만들려고합니다. 세로 모드 일 때 일부 barbutton 항목은 표시되지 않으므로이 항목이있는 작은보기가 팝업되는 "more"단추를 추가합니다. 내 문제는 내 현재 오리 엔테이션이 초상화 때 (팝업에없는) 표시 barbuttonitem을 선택하면 그것이 열려있는 경우 팝업을 닫고 싶습니다. 탭 뒤 팝업을 닫으려면 popupview의 uibarbuttons에 대한 smae 동작을 원합니다.UIBarButtonItem selector 바꾸기 또는 확장하기

-(SEL)extendOriginal:(UIBarButtonItem *) uibb 
{ 
    if (popup) popup.hidden = YES; 
    [uibb.target performSelector:uibb.action]; 
    // return ?? do what ?? 
} 

하지만 원래의 선택을 교체하는 방법이 사용자 정의 전화 :

그래서 내가있는이 같은 이미 정의 된 작업을 호출, 내 자신과 어떻게 든 UIBarButtonItem의 선택을 대체하기 위해 노력하고있어 내 사용자 지정 UIToolbar를 대상으로 메서드를? 아니면이 호출을 통해 원래 선택기를 "확장"할 수 있습니까? 죄송합니다 질문에 절름발이가 있다면

편집 : 즉, UIBarButtonItem을 두드릴 때 실행될 2 개의 개별 대상이있는 2 개의 동작이 필요합니다.

감사합니다.

답변

0

로 대상을

- (void)myMethod:(UIBarButtonItem *) uibb 
{ 
    if (popup) popup.hidden = YES; 

    // do cool stuff here 
} 

에 코드를 변경 및 설정하려고, 내가 아닌 예쁜 그것을 할 수있는 방법을 찾았지만 작동합니다.

사용자 지정 도구 모음 클래스에서 나는 해당 레이아웃 메서드에서 도청을 처리하기 위해 UITapGestureRecognizer을 만들었습니다. 나는 false로 cancelsTouchesInView를 설정 한하고

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

방법에 난 단지 내 도구 모음의 파단에 대한 진정한 반환하고 있습니다.

이 방법은 각 UIBarButtonItem의 원래 대상과 동작이 동일하게 유지되며 내 팝업을 처리하는 보조 코드는 UIGestureRecognizer의 동작입니다. 또 다른 문제는 툴바의 탭된 항목을 구별하는 것이 었습니다. (touch.view의 탭된보기는 문서화되지 않은보기입니다. 예) 일부 BOOL iVars에서 수행했습니다.

나는 이것이 동일한 문제를 가진 누군가에게 도움이되기를 바랍니다.

0

-(SEL)extendOriginal:(UIBarButtonItem *) uibb은 의미가 없습니다.

당신이 대상과 바 버튼 항목의 동작을 어딘가에 설정한다고 가정합니다. 여기서 하나의 인수 id 또는 UIBarButtonItem*을 선택기로 사용하여 모든 메소드를 설정할 수 있습니다.

따라서 마지막으로

[[UIBarButtonItem alloc] initWithTitle: @"Blabla" style: UIBarButtonItemStylePlain target: self action: @selector(myMethod:)]; 
+0

예, 이해가되지 않습니다. UBarButtonItems를 내 custom toolbars 중 하나가있는 viewcontroller에 추가하고 있습니다. 내 문제는 그것을 투명하게 구현할 수 있습니다, 그래서 단추를 작업이 정의 된 다른 viewcontroller이 구현 세부 (btw, 현재 가지고 있지만, 그 이유는 내가이 문제를 자동으로 처리하는 사용자 지정 도구 모음 wnt 이유입니다. – Templar

+0

더 정확하게 말하면 내 질문을 편집했습니다. – Templar

관련 문제