所有UI前面都有透明的UIImageView

时间:2012-04-06 09:52:03

标签: objective-c ios uitableview uinavigationcontroller uiimageview

首次启动我的应用程序后,我想向用户展示一个小教程,以解释我的应用程序的功能。

所以我需要设置一个带有箭头和标签的transpalent UIImageView,其中主UI(更具体地说,tabbarcontroler中的navigationviewcontroller中的tableviewcontroller)在教程图像后面可见。

而且,由于教程包含多个图像,我想添加一个可以切换到另一个图像的点按手势。

我只是尝试将UIImageView添加到我的tabbarcontroller,并添加了一个手势识别器,但它没有对我的水龙头作出反应,它只是工作,就像没有ImageView一样 - 选择表中的鱼子,推动的按钮。

   -(void)nextTap:(UIGestureRecognizer*)nextTap
{
    //Show another image
}
-(void)showTutorial
{
    NSLog(@"Show tutorial");
    UIImageView *tutorialImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"BG"]];
    [self.navigationController.tabBarController.view addSubview:tutorialImage];
    UITapGestureRecognizer *nextTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(nextTap:)];
    [tutorialImage addGestureRecognizer:nextTap];
}

任何人都可以告诉我,我应该在哪里添加我的观点,以使其正常工作?

3 个答案:

答案 0 :(得分:3)

用另一个UIWindow做到这一点!

像这样:

-(void)showTutorial
{
    NSLog(@"Show tutorial");


    CGRect screenBounds = [UIScreen mainScreen].bounds;
    UIWindow *anotherWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.height)];
    anotherWindow.windowLevel = UIWindowLevelAlert+1;
    [anotherWindow makeKeyAndVisible];

    // make the background of the new window black alpha 0.5
    anotherWindow.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];

    // add a test-image (icon)
    UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon.png"]];
    [anotherWindow addSubview:image];

    UIImageView *tutorialImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"BG"]];
    [anotherWindow addSubview:tutorialImage];
    UITapGestureRecognizer *nextTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(nextTap:)];
    [tutorialImage addGestureRecognizer:nextTap];
}

<强> EDITED !现在它也适用于你的情况。

答案 1 :(得分:2)

添加标签栏后,只需尝试将图像视图添加到主屏幕。这可能正常。我不了解您的主要要求,

答案 2 :(得分:1)

你应该设置tutorialImage.userInteractionEnabled = YES UIImageView的userInteractionEnabled属性的默认值为NO,它阻止UIImageView接收任何触摸事件甚至手势