1

私のアプリケーションでは、サブビュー (これは別の画面です) を持つメイン画面がありますが、このサブビューは右に 320 移動しているため、画面外になっています。その結果、メイン画面が左に 320 移動し、サブビューであるため、メイン画面が非表示になり、別の画面が表示されます。問題は、メイン画面 (スーパービュー) の境界外にあるため、他の画面がタッチ イベントを受信して​​いないことです。ボタンをタップできるように、この他の画面にもタッチイベントを受け取るようにするにはどうすればよいですか?

4

1 に答える 1

0

説明については、 SO に関するこの投稿を参照してください。解決策は、次のコードを使用して独自の hitTest を実装することです。

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {

    BOOL isInside = [super pointInside:point withEvent:event];

    // identify the button view subclass
    UIButton *b = (UIButton *)[self viewWithTag:3232];
    CGPoint inButtonSpace = [self convertPoint:point toView:b];

    BOOL isInsideButton = [b pointInside:inButtonSpace withEvent:nil];

    if (YES == isInsideButton) {

       return isInsideButton;

    } // if (YES == isInsideButton)

    return isInside;
 }

 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    UIView *v = nil;

    v = [super hitTest:point withEvent:event];

    return v;
 }
于 2012-06-19T14:57:30.120 に答える