2012-09-05 101 views
6

这里是一个非常简单的问题。 你如何创建一个这样的视图? enter image description here创建点击覆盖指令视图

它必须覆盖第一次用户运行该应用程序的这一部分,并在用户点击它时永远删除。我知道它应该是一个UIImageView,但你如何使它活跃,然后永远从视图中删除它?

回答

9

您可以使用UIView类的addSubView方法在应用程序代理的didFinishLaunchingWithOptions方法中启动应用程序之后立即添加子视图。这里是你如何能进行一些代码片段:

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    UIImageView *imageView = [[UIImageView alloc] 
    initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
    [self.window addSubview:imageView]; 

    UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
    recognizer.delegate = self; 
    [imageView addGestureRecognizer:recognizer]; 
    imageView.userInteractionEnabled = YES; 
    self.imageView = imageView; 
} 

- (void) handleTap:(UITapGestureRecognizer *)recognize 
{ 
    [self.imageView removeFromSuperView]; 
} 

请注意,您将需要一个属性来引用您的ImageView在handleTap方法。

+0

谢谢,男人!像魅力一样工作! –

+0

我从“不兼容的类型AppDelegate *'”分配给id ' - 任何建议?谢谢! – Ernest

+0

你需要使你的AppDelegate符合UIGestureRecognizerDelegate声明如下:yourAppDelegate() tiguero

1

我的想法是设置一个NSUserDefault变量,并在applicationDidFinishLaunchingWithOptions或应用程序中的其他位置检查它是否合理。当您的变量为true或false时,您可以单独推送一个视图。

4

UIView有您需要的所有方法,例如

  • 呼叫[myView addSubview:imgView]到图像视图添加到当前视图(myView
  • 呼叫[imgView removeFromSuperview]时结束(即响应点击或定时器后)

确保的imgViewuserInteractionEnabled财产到NO,以便接触传递给myView

+0

为什么没有子视图处理水龙头? – tiguero

+1

你可以,但问题要求“点击”行为,所以我认为poster'd更喜欢有背景视图来处理触摸。 –

+0

确定他的头衔有误导性。他提到:“当用户第一次运行应用程序的这部分时,必须重叠,并在用户点击它时永远删除”,因此他显然希望在覆盖视图上出现水龙头 – tiguero