2011-08-08 5 views
3

UINavigationController에서 제공하는 UIToolbar에 대한 백그라운드에서 터치를 감지하고 싶습니다. 내가 시도 상황이 작동하지 않는 (아니면 동작하지 않습니다 수) :UINavigationController 도구 모음의 백그라운드에서 터치를 감지하는 방법

  • UIToolbar에 UITapGestureController를 추가 - 이것이 실패는 탭을 감지는하지만,이 버튼 있도록 터치를 소비하기 위해 (때문에) 유연한 공간 터치를 데리러 나타나지 않습니다 (공평 것)

- UIBarButtonSystemItemFlexibleSpace있는 UIBarButtonItem의 목표와 행동을 설정

  • (그들은 더 감동을받을 수 없기 때문에) 도구 모음에서 작동이 중지 내가 원하는 것은 버튼이 아닌 모든 터치를 감지하는 것입니다. UINavigationController (읽기 전용 임) 도구 모음을 설정할 수 없다는 것을 감안할 때, 내 자신의 UIToolbar 서브 클래스를 대체 할 수 없기 때문에, 빠진 트릭/해결 방법이 있습니까?

  • +2

    큰 버튼을 추가하고 z 값을 가장 낮게 설정할 수 없습니까? 'UIToolbar'는'UIView'이므로, 할 수 있어야합니다. – bdares

    답변

    4

    다음 코드는 트릭을 수행합니다

    CGSize toolbarSize = [[[self navigationController] toolbar] frame].size; 
    UIControl* backgroundControl = [[UIControl alloc] initWithFrame: CGRectMake(0, 0, toolbarSize.width, toolbarSize.height)]; 
    [backgroundControl addTarget:self action:@selector(toolbarBackgroundTap) forControlEvents:UIControlEventTouchDown]; 
    [backgroundControl setAutoresizingMask: [[[self navigationController] toolbar] autoresizingMask]]; 
    [[[self navigationController] toolbar] insertSubview:backgroundControl atIndex:0]; 
    [backgroundControl release]; 
    

    @bdares을 - 감사 의견의 제안에 대해. 그것은 매우 도움이되었습니다.

    관련 문제