2

我目前正在尝试创建一个视图来处理我的应用程序上可能发生的所有手势。

我希望这个视图透明,以便将其他视图放在下面并且它们仍然会显示(我不想让它们成为处理视图的子视图)

手势处理工作正常,直到我从那时起将视图颜色设置为“clearColor”,它使视图消失。除非我坚持子视图,否则在这种情况下,手势只会在点击子视图时发生。

因此,我的问题是:我如何设法让 Gesture 事件在透明视图上发生?

4

1 回答 1

1

尝试这样的事情。此代码将两个子视图添加到主视图“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 回答