1

灰色の背景サブビューがあり、その上にドラッグできるタイルがあります。これはすべて、1 つのビュー コントローラーで行われます。問題は、ヒット テストを実行して backgroundView を回避しようとすると、タイルがそのビューの上にあるため、それらの座標が表示され、nil を返すためタッチ移動イベントを回避することです。

以下はコードです:

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

    for (UIView *view in self.subviews) {

        //This checks if touches are within the region of the custom view based on its cordinates.
        if (CGRectContainsPoint(view.frame, point)) {
            NSLog(@"touched the boat view %f %f and %f %f",view.frame.origin.x, view.frame.origin.y, point.x, point.y);

            if ([view isEqual:backgroundView])  {
                return nil;
            }
            else
                return view;
        }
    }

    return nil;
}

バックグラウンド ビューを確認していることがわかりますが、タイルはバックグラウンド ビュー上にあるため、他のロジックに基づいてドラッグされていません。userInteractiveEnabled を No にしようとしましたが、うまくいきません。助言がありますか?

4

1 に答える 1