3

UIView を上に持つ UIScrollView でタッチを検出したい。このUIViewにはボタンがあるためuserInteractionEnabled、UIViewで無効にすることはできません。

理解を深めるための階層は次のとおりです。

UIView (MainView: (0,0) 320x460)
. .UIScrollView (ScrollView: (0,0) 320x460)
. .UIView (OverlayView: (0,0) 320x250)
. . . .UIButton (button1: 50x50)
. . . .UIButton (button2: 50x50)
. . . .UIButton (button3: 50x50)

OverlayView の外に触れるとスクロールできます。ただし、OverlayView の空の場所ではありません。

何かアドバイス?ありがとうございました!

4

1 に答える 1

0

スクロールビューのサブビューとしてオーバーレイ ビューを追加してから、スクロールビューがスクロールするときにオーバーレイ ビューのフレームを更新してみてください。

初期化時に元のオーバーレイ フレームをメンバー変数に保存する

CGRect baseOverlayRect = overlayView.frame;

スクロール ビュー デリゲート メソッド。

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {

    CGPoint overlayOrigin = CGPointMake(baseOverlayRect.origin.x, baseOverlayRect.origin.y + scrollView.contentOffset.y);
    CGRect newOverlayFrame = CGRectMake(overlayOrigin.x, overlayOrigin.y, baseOverlayRect.width, baseOverlayRect.height);
    overlayView.frame = newOverlayFrame;

}
于 2012-05-01T18:58:50.003 に答える