2012-09-05 14 views
6

ここでは本当に簡単な質問です。 どのようにこのようなビューを作成しますか? enter image description hereクリックスルーオーバーレイ命令の表示の作成

ユーザーがアプリのこの部分を初めて実行したときにオーバーレイする必要があり、ユーザーがタップすると永遠に削除されます。私はそれがUIImageViewでなければならないことを理解していますが、それをアクティブにしてから、ビューから永遠に削除しますか?

答えて

9

UIViewクラスのaddSubViewメソッドを使用して、アプリデリゲートのdidFinishLaunchingWithOptionsメソッドでサブビューを追加することができます。あなたはhandleTap方法であなたのImageViewのを参照するプロパティが必要になります

- (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]; 
} 

注:ここではあなたが進むことができる方法のいくつかのコードスニペットです。

+0

ありがとう、男!チャームのような作品! –

+0

私は「id に 'AppDelegate *'の互換性のないタイプから割り当てています」 - 助言はありますか?ありがとう! – Ernest

+0

AppDelegateをUIGestureRecognizerDelegateに準拠させる必要があります。yourAppDelegate() tiguero

1

私の考えは、NSUserDefault変数を設定し、applicationDidFinishLaunchingWithOptionsまたは他のアプリケーションのどこかでそれをチェックします。変数がtrueとfalseの場合は、別のビューをプッシュするだけです。

4

UIViewには、必要なすべての方法があります。現在のビューに画像ビューを追加する

  • コール[myView addSubview:imgView]myView
  • コール[imgView removeFromSuperview]仕上げ(すなわち応答にタップするか、タイマーの後にする)

imgViewの確認userInteractionEnabledプロパティを確認しますNOに移動し、接触はmyViewに渡されます。

+0

なぜサブビューでタップを処理しないのですか? – tiguero

+1

できますが、質問は「クリックスルー」の動作を求めています。そのため、posterは、タッチを処理するバックグラウンドビューを希望しています。 –

+0

彼のタイトルはミスリーディングです。彼は言い​​ました:「ユーザーがアプリのこの部分を初めて実行したときにオーバーレイする必要があり、ユーザーがタップすると永遠に削除される」ため、オーバーレイビューでタップが発生するようにしてください。 – tiguero