2

現在、アプリケーションで発生する可能性のあるすべてのジェスチャを処理するビューを作成しようとしています。

他のビューを下に配置するためにこのビューを透明にしたいと思いますが、それらは引き続き表示されます(処理ビューのサブビューにしたくありません)

それからビューの色を「clearColor」に設定するまで、ジェスチャー処理は正常に機能し、ビューが消えます。サブビューを固定しない限り、この場合、ジェスチャはサブビューをヒットしたときにのみ発生します。

したがって、私の質問は次のとおりです。透明なビューでジェスチャイベントを発生させるにはどうすればよいですか?

4

1 に答える 1

1

このようなことを試してください。このコードは、メイン ビューに 2 つのサブビューを追加します。「bottomView」は背景が赤で、「testView」はタップ ジェスチャ認識機能を備えた「bottomView」の上に透明なオーバーレイです。とにかく「testView」でタップすると、 NSLog メッセージを出力してください。

-(void)viewDidLoad
{
    [super viewDidLoad];

    UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    [bottomView setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:bottomView];    
    UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 150)];
    [testView setBackgroundColor:[UIColor clearColor]];
    [self.view addSubview:testView];

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] 
                                          initWithTarget:self
                                          action:@selector(handleTap:)];
    [tapRecognizer setNumberOfTapsRequired:1];
    [tapRecognizer setDelegate:testView];
    [testView addGestureRecognizer:tapRecognizer];
}

-(void)handleTap:(UITapGestureRecognizer *)sender 
{
     NSLog(@"Tapped Subview");
}
于 2012-06-22T08:16:22.483 に答える