2011-08-08 17 views
3

UINavigationControllerが提供するUIToolbarへの背景のタッチを検出したい(またはタップする)ことを検出したいと思います。私が試してみました物事は動作しないこと(または私が仕事を得ることができなかったこと):UINavigationControllerツールバーの背景にタッチを検出する方法

  • UIToolbarにUITapGestureControllerを追加する - これが失敗し、それがタップを検知んが、それはボタンので、タッチを消費するので柔軟なスペースがタッチをピックアップして表示されません(十分な公正と思われる)

- UIBarButtonSystemItemFlexibleSpaceあるUIBarButtonItem上のターゲットとアクションを設定

  • (彼らは何のタッチを受けないよう)ツールバーの動作を停止私が望むのは、ボタンではないタッチを検出することです。私は自分のUIToolbarサブクラスを代用することができないので、私はUINavigationControllerのためのツールバーを設定することはできません(それは読んでいるだけです)、そこにトリック/回避策がありますか? - あなたのコメントで提案してくれてありがとう

    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:

  • +2

    大きなボタンを追加して、そのZ値を最も低く設定できませんでしたか? 'UIToolbar'は' UIView'ですので、できるはずです。 – bdares

    答えて

    4

    次のコードは、トリックを行います。それはとても役に立ちました。

    関連する問題