0

何らかの理由で、私の UITapGestureRecognizer は、レコグナイザーが追加されたときにツールバーのボタンが押されるのをブロックしていself.viewます。アイテムがツールバーボタンの場合はshouldReceiveTouchNOを返したいです。

ただし、これを行うにはどうすればよいですか?項目は明らかに UIBarButtonItems ではありません。if ステートメントを配置しtouch.viewてそのクラスのものかどうかを確認すると、それが無視されるためです。touch.viewそこにブレークポイントを置いて、そのクラスを調べるとUIToolbarTextButton. しかし[UIToolbarTextButton class]、「宣言されていない識別子 UIToolbarTextButton の使用」エラーが発生します。

のサブビューかどうか言えますUIToolBarか? 私は何をすべきか?

4

2 に答える 2

0

コードがないと、これは答えるのが難しい質問です...ただし、ツールバーと同じビューに Tapgesture 認識エンジンを追加しているように聞こえます...座標をチェックして、それらが uitoolbar の CGrect 内にあるかどうかを確認できます...しかし、実際にお勧めするのは、2 つのサブビューを含むビューを作成することです。幸運を

于 2013-10-07T19:04:47.060 に答える
0

より良い解決策は、UITapGestureRecognizer を self.view に追加しないことです。

ツールバー領域を除くすべての領域をカバーする Interface Builder で新しいビューを追加します。

その中にすべてのコントロールを配置し、タップ ジェスチャを追加します。

別の方法: これを ViewDidLoad 関数またはより適切な場所に追加します。

for (UIView *v in [toolbar items]) 
{
    v.tag = 5; // tag tool bar items
}

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

    if (touch.view.tag == 5)
        return NO;
    return YES;
}
于 2013-10-07T19:05:38.767 に答える