2012-09-05 247 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