1

カスタム ナビゲーション バーを作成し、その上に UIButton を 1 つ追加しました。

添付画像をご覧ください。

ここに画像の説明を入力

カスタム ナビゲーションバーにサブビューとして追加された背景画像を含む UIButton があるため、緑の線より上の部分は緑の線より下の部分ではなくクリック可能です。

UITapGestureRecognizerとtouches メソッドを使用してみました。touchesタッチを処理するために UIImageView を開始しましたが、うまくいきませんでした。

これは、UIButton の触れられないポーションが NavigationBar フレームの外側にあるためだと思います。

親ビューの外側にあるサブビューの部分をクリックする方法はありますか?

4

2 に答える 2

0

ナビゲーション バーをサブクラス化し、メソッドを追加する必要がありhitTest:withEvent:ます。例えば:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {    
    CGRect extraTapRect = ...; // Put here needed rect
    if (CGRectContainsPoint(extraTapRect, point)) {
        for (UIView *subview in self.subviews.reverseObjectEnumerator) {
            CGPoint subviewPoint = [subview convertPoint:point fromView:self];
            UIView *result = [subview hitTest:subviewPoint withEvent:event];
            if (result != nil) {
                return result;
            }
        }
    }

    return [super hitTest:point withEvent:event];
}
于 2015-10-14T04:59:17.937 に答える